我想使用 nginx 负载均衡器。上游部分使用的域服务器使用共享 IP。假设负载均衡器服务器的域名为load-balancer.com
upstream test_upstream {
server upstream1.com;
server upstream2.com;
}
和
location / {
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://test_upstream/;
proxy_set_header Host $proxy_host;
}
由于域使用共享 IP,因此值Host
等于upstream1.com
或非常重要upstream2.com
。但将值$proxy_host
设置Host
为等于上游名称。(在此示例中,它设置test_upstream
为 Host)。上游服务器中收到的标头如下:
065.227.015.247.39136-085.083.104.010.00080: GET / HTTP/1.1
Connection: upgrade
Host: test_upstream
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 OPR/98.0.0.0
....
另外,使用$host
或$http_host
代替$proxy_host
也会将 的值load-balancer.com
作为 Host 发送。此外,如果使用$upstream_http_host
或$upstream_http_server
或$upstream_http_addr
,将发生 404 错误。如何正确设置 Host 值?