網站突然回傳 502 或 504,訪客只看到一行錯誤。這兩個錯誤幾乎都出在「反向代理(如 Nginx)和後端程式之間」。本文教你快速定位。

1. 502 和 504 的區別

  • 502 Bad Gateway:Nginx 轉發給後端時,後端沒回應或直接掛了/連不上
  • 504 Gateway Timeout:後端有回應但太慢,超過了等待時間

2. 最常見的原因

  • 後端程式(Node/PHP-FPM/Python 等)掛了或沒啟動
  • Nginx 設定的 proxy_pass 連接埠/位址不對,或後端換了連接埠。
  • 後端處理慢(慢查詢、無窮迴圈、外部介面逾時)→ 504。
  • 記憶體被打滿,程序被系統 OOM 砍掉。

3. 排查步驟

  • 看後端在不在:用 pm2 listsystemctl status 服務 確認程序是否 running。
  • 看連接埠ss -lntp 看後端是否在監聽 Nginx 轉發的那個連接埠。
  • 看 Nginx 錯誤日誌tail -f /var/log/nginx/error.log,502/504 會寫明 connect refused 還是 timeout。
  • 本機直連後端curl http://127.0.0.1:連接埠,能通說明問題在 Nginx 設定,不通說明後端本身有問題。

4. 對應修復

  • 後端掛了 → 重啟程序,並查它的日誌找當掉原因。
  • 連接埠不對 → 改 Nginx 的 proxy_pass,nginx -t 測試通過後 reload
  • 504 慢 → 最佳化慢查詢/介面,或適當調大 proxy_read_timeout(治標)。
  • OOM → 加 swap 或升記憶體(見幫助中心「記憶體不足 OOM」一文)。