proxy
proxy_set_header Host $host $proxy_port $http_host
浏览器直接访问服务,获取到的 Host 包含浏览器请求的 IP 和端口。
app.run(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"
}