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"
}