501 Not Implemented(未實現)
HTTP 方法不支持
- 客戶端發送了?
PUT
、DELETE
、PATCH
?請求 - 但服務器只實現了?
GET
?和?POST
協議功能不支持
- 客戶端使用了 HTTP/2 的某些高級特性
- 服務器只支持 HTTP/1.1,無法處理,返回?
501
API 接口未完成
- 開發中預留了?
/v1/report
?接口,但還沒寫邏輯 - 臨時返回?
501
?表示“這個功能還沒做”
502 Bad Gateway (最不好排查)
它表示:作為網關或代理的服務器,在嘗試將請求轉發給上游服務器(后端服務)時,收到了一個無效的響應
無效的響應”是指:網關(如 Nginx)期望收到一個合法的 HTTP 響應,但實際收到的內容無法被解析為有效的 HTTP 協議格式。”
一個合法的 HTTP 響應應該包含:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 18
Date: Mon, 24 Aug 2025 04:00:00 GMT{"status":"ok"}
? 例子 1:后端服務崩潰,返回了錯誤日志(純文本)????????
? 例子 2:后端服務返回了二進制數據(如圖片、PDF,但沒設 Content-Type)
? 例子 3:后端服務只返回了部分響應(連接提前關閉)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 50
Date: Mon, 24 Aug 2025 04:00:00 GMT
{"name": "張三", "orders": [
? 例子 4:后端服務返回了亂碼或編碼錯誤
?502 的“概率分布”
原因 | 發生頻率 | 是否常見 |
---|---|---|
后端服務沒啟動/重啟中 | ????? | ? 最常見 |
服務 OOM 崩潰 | ???? | ? 高頻 |
異常堆棧輸出到響應 | ??? | ? 常見(尤其新項目) |
配置寫錯 | ?? | ? 發布時常見 |
依賴服務掛了(級聯) | ??? | ? 復雜系統常見,但通常返回的504 |
502 一眼定位法:兩步走
tail -f /var/log/nginx/error.log
然后根據日志內容,直接對號入座:
日志關鍵詞 | 根因 | 修復方向 |
---|---|---|
Connection refused | 后端服務沒啟動 | 查進程、容器、端口 |
Connection reset by peer | 后端服務突然斷開,很可能是被“第三方的防火墻”攔截了 | 修改配置文件里第三方服務IP |
prematurely closed connection | 后端響應不完整 | 查后端異常、堆棧輸出、依賴掛了 |
upstream timed out | 后端處理太慢?→ 這是?504! | 優化性能、加超時 |
no resolver defined | Nginx 配置寫錯 | 檢查?proxy_pass ?地址 |
504 Gateway Timeout(網關超時)
我(當前節點)轉發了請求,但上游服務一直不回我,我等不了了
Nginx返回的
HTTP/1.1 504 Gateway Timeout
Server: nginx
Date: Mon, 24 Aug 2025 03:20:00 GMT
Content-Type: text/html
Content-Length: 564
Connection: keep-alive<html>...</html>
Spring WebFlux / Spring Cloud Gateway返回的
HTTP/1.1 504 Gateway Timeout
Server: reactor-netty/1.1.0
Date: Mon, 24 Aug 2025 03:20:00 GMT
Content-Type: application/json
Content-Length: 128{"error":"Gateway Timeout","message":"Upstream service timeout"}
補充:504與502 的邊界
無論是502還是504,都完全取決于Nginx直接連接的上游第一個服務的交互結果
錯誤碼 | 判斷依據(Nginx 視角) | 你總結得對嗎? |
---|---|---|
502 Bad Gateway | 上游服務:? 沒啟動 / ? 端口沒開 / ? 啟動了但返回無效響應(如斷開、亂碼) | ??完全正確 |
504 Gateway Timeout | 上游服務:? 啟動了,端口開著,TCP 能連上,但 ? 一直不返回完整響應(超時) | ??完全正確 |