現象:nginx在使用非80端口做反向代理時,瀏覽器訪問發現返回302錯誤
詳細現象如下:
瀏覽器請求登錄頁:
輸入賬號密碼點擊登錄:
很明顯登錄后跳轉的地址少了端口號。
原因:proxy.conf文件中定義的proxy_set_header Host $host;
意思是nginx接收到瀏覽器請求后修改請求頭中的host信息,然后再把請求轉發給后端真實服務節點,服務節點響應后把返回信息傳送給nginx,而由於nginx是使用的非80端口做代理,后端服務節點卻依然以為nginx是80端口,所以響應信息沒有正確的返回給nginx的非80端口
解決:修改為proxy_set_header Host $host:$server_port;即可。
這樣就把請求頭中的host修改為nginx的非80端口了,后端服務節點就知道響應應該返回的正確nginx代理端口