今天准備的線上演示版本,把端口映射到外網后,發現跳轉不正確,丟失了端口。
環境:centos7+docker
方案嘗試:
1、修改docker的端口映射,直接把nginx的端口改為外網的端口。改完之后,大部分連接好用,還有個別鏈接不好用。方案被pass。
2、我們的nginx的原來配置有這么一行:proxy_set_header Host $host;
我查看了nginx的文檔,有這么一段說明 :
如果不想改變請求頭“Host”的值,可以這樣來設置:
proxy_set_header Host $http_host;
但是,如果客戶端請求頭中沒有攜帶這個頭部,那么傳遞到后端服務器的請求也不含這個頭部。 這種情況下,更好的方式是使用 $host 變量——它的值在請求包含“Host”請求頭時為“Host”字段的值,在請求未攜帶“Host”請求頭時為虛擬主機的主域名:
proxy_set_header Host $host;
此外,服務器名可以和后端服務器的端口一起傳送:
proxy_set_header Host $host:$proxy_port;
如果某個請求頭的值為空,那么這個請求頭將不會傳送給后端服務器:
proxy_set_header Accept-Encoding "";
於是把這行配置改為: proxy_set_header Host $http_host;
改完之后,沒有發現丟失端口的情況。
使用方案2之后,暫時沒有發現什么不良反應。
