proxy_set_header Host $host $proxy_port $http_host

时间:2025-05-12 09:48:38

proxy_set_header Host $host $proxy_port $http_host

浏览器直接访问服务,获取到的 Host 包含浏览器请求的 IP 和端口。

(host='192.168.88.99', port=9494)

结果如下:
{
	Host:"192.168.88.99:9494"
}

配置 nginx 代理服务后

不设置 proxy_set_header Host 时,浏览器直接访问 nginx,获取到的 Host 是 proxy_pass 后面的值,即 $proxy_host 的值。

server {
	listen 8090;
	server_name _;
	location / {
		proxy_pass http://192.168.88.99:9494;
	}
}

结果如下:
{
	Host:"192.168.88.99:9494"
}

设置 proxy_set_header Host $host 时,浏览器直接访问 nginx,获取到的 Host 是 $host 的值,没有端口信息。

server {
	listen 8090;
	server_name _;
	location / {
		proxy_set_header Host $host;
		proxy_pass http://192.168.88.99:9494;
	}
}
结果如下:
{
	Host:"192.168.88.99"
}

 设置 proxy_set_header Host $host:$proxy_port 时,浏览器直接访问 nginx,获取到的 Host 是 $host:$proxy_port 的值。

server {
	listen 8090;
	server_name _;
	location / {
		proxy_set_header Host $host:$proxy_port;
		proxy_pass http://192.168.88.99:9494;
	}
}
结果如下:
{
	Host:"192.168.88.99:9494"
}

 设置 proxy_set_header Host $http_host 时,浏览器直接访问 nginx,获取到的 Host 包含浏览器请求的 IP 和端口。

server {
	listen 8090;
	server_name _;
	location / {
		proxy_set_header Host $http_post;
		proxy_pass http://192.168.88.99:9494;
	}
}
结果如下:
{
	Host:"192.168.88.99:9494"
}