toolfree

502 Bad Gateway

502 代表什麼、和 503、504 差在哪裡,以及當你自己的伺服器回 502 時該檢查什麼。

在你的瀏覽器中執行

點一下代碼即可複製。

5xx · 伺服器錯誤

請求本身沒有問題,是伺服器沒能處理好。

代碼意義
Internal Server Error出了問題,而伺服器說不出更具體的原因。
Not Implemented伺服器根本不支援這個要求。
Bad Gateway代理伺服器向上游詢問,卻拿到一個無法使用的回應。上游有回應,只是回得不對。504 是上游沒有在時限內回應,503 則是這台伺服器自己決定不處理。
Service Unavailable暫時不提供服務,可能是超載或正在維護。
Gateway Timeout代理伺服器等待上游回應,最後放棄了。

中間那台機器拿到了一個壞答案

502 來自一台不是原本該回答你的機器。某個代理伺服器、負載平衡器或 CDN 把你的請求往上游 送,收到了回應,卻看不懂那是什麼。

所以 502 從來就不是在講你問的那台伺服器,而是在講它後面兩台機器之間的對話——這正是為什麼 它從外面完全看不出原因,在日誌裡卻一目了然。

502、503、504 是三種不同的失敗

代碼發生了什麼
502上游回了但回得不對——格式錯誤,或連線在回應中途斷掉
503這台伺服器自己決定不處理——超載,或正在維護
504上游沒有在時限內回應

在你自己的服務裡把這三個用對,比想像中重要:帶著 Retry-After 標頭的 503 能明確告訴用戶端 什麼時候可以再來,而 502 什麼有用的資訊都沒給。

如果是別人的網站出現 502

你能做的很少,而且幾乎絕不是你這端的問題。過一分鐘再重新整理。如果換網路、換裝置都還是這樣, 那就是他們的問題。

有一件事值得排除一次:你自己這邊過期的快取轉址,或是公司的代理伺服器,也可能產生一個只有你 看得到的 502。

如果是你自己的伺服器在回 502

常見原因大致依序如下:

在這種情況下,應用程式的日誌幾乎總是比代理的日誌更有用。代理只知道那個答案不能用,應用程式 才知道為什麼。