晓夏

新手菜鸟Linux学习之路

不怕从零开始,只怕从未启程

关于nginx中的变量$Host与$http_host

浏览量:2864

今天遇到了一个很神奇的问题,在location中设置proxy_pass时,后端拼接我们http请求后发现端口不见了。
当时我就蒙圈了。下图是网络组的截图.

image.png


当时的nginx中的location配置如下:

image.png


日志显示如下: (第一个红框为$host返回的值,而第二个是$http_host返回的值)

image.png



后来发现是因为我们server中使用的端口是8086,非80常规端口.而host变量里的值是本机ip。
这种非常规端口的反代的话,在设置proxy_set_header中需要注意。

第一种解决方法:proxy_set_header  Host $host:server_port                #在location中设置proxy_set_header时加上server的端口如$host:8086
第二种解决方法:proxy_set_header  Host $http_host                       #直接在location中设置为$http_host,效果等同于$host:8086





分享:

支付宝

微信