1. 程式人生 > >upstream sent invalid header while reading response header from upstream 錯誤解決

upstream sent invalid header while reading response header from upstream 錯誤解決

由於最近線上出現502錯誤比較蛋疼,所以重新把nginx詳細配置做下說明,以此來查詢問題。

nginx 配置
location / {
            proxy_next_upstream http_500 http_502 http_504 error timeout invalid_header;
            proxy_pass http://bak_server;
            proxy_set_header Host   $host;

            proxy_set_header X-Real-IP      $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
配置說明如下:
proxy_next_upstream http_500 http_502 http_504 error timeout invalid_header;
#這個配置指定nginx在從一臺後端主機獲取資料時遇到何種錯誤時會轉到下一個後端伺服器,預設是error timeout 就是後端伺服器
當機,網路出現問題之類的,timeout一般是網路阻塞,超時。
proxy_pass http://bak_server;

#轉發請求到後端伺服器
proxy_set_header Host   $host;
proxy_set_header X-Real-IP      $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#以上三行的配置是同一個目的,後端伺服器獲得client的真實IP

#nginx並不會對X-Forwarded-For頭做任何的處理,除非使用者使用proxy_set_header 引數設定:
proxy_set_header         X-Forwarded-For $proxy_add_x_forwarded_for;
$proxy_add_x_forwarded_for變數包含客戶端請求頭中的"X-Forwarded-For",與$remote_addr用逗號分開,如果沒有"X-Forwarded-For" 請求頭,則$proxy_add_x_forwarded_for等於$remote_addr。
$remote_addr變數的值是客戶端的IP

根據線上的錯誤

8990057 upstream sent invalid header while reading response header from upstream


所以註釋掉
invalid_header
變為:
proxy_next_upstream http_500 http_502 http_504 error timeout;
則一切正常了。