Nginx 接收不到 SSE
TLDR 問題:將 Nginx 配置從測試環境遷移到正式環境後,無法接收 SSE 原因:Nginx 1.22.0 預設使用了 HTTP/1.0 而不是 HTTP/1.1 調查方法:啟用調試日誌並分析 解決方案:在 Nginx 全局設置中指定 HTTP 版本為 1.1 情境 使用一樣的 Config,從測試環境搬移到正式環境後,一般請求皆正常,但 SSE 無回應(Timeout)。 經過人工、工具比對,以及 ChatGPT 分析,都沒有發現設定上的問題。 唯一差異在於測試環境是 1.22.1,而正式環境的 Nginx 版本是 1.22.0。 調查過程 啟用調試日誌 首先在 /etc/nginx/nginx.conf 中啟用調試日誌,印出詳細的錯誤: 1 error_log /var/log/nginx/error.log debug; 檢查配置並重新加載 Nginx: 1 2 nginx -t nginx -s reload 分析日誌 我們可以在 /var/log/nginx/error.log 找到錯誤資訊。 若是緊急線上修復,且很多使用者在線,可能導致 log 過多難以查找,這時候可以用以下方法: 1 tail -f -n 1 /var/log/nginx/error.log | grep -i "sse" # sse可替換為你想要查找的關鍵字 這行指令會持續追蹤 error.log 的最新一行,並且過濾出含有 “sse” 的 log。 ...