移自:https://stackoverflow.com/questions/3748517/does-nginx-upstream-has-a-port-setting
我使用upstream
和proxy
进行负载平衡。
该指令proxy_pass http://upstream_name
使用默认端口,即 80。
但是,如果上游服务器没有监听此端口,则请求失败。
如何指定备用端口?
我的配置:
http{
#...
upstream myups{
server 192.168.1.100:6666;
server 192.168.1.101:9999;
}
#....
server{
listen 81;
#.....
location ~ /myapp {
proxy_pass http://myups:81/;
}
}
nginx -t:
[warn]: upstream "myups" may not have port 81 in /opt/nginx/conf/nginx.conf:78.
答案1
我认为你误解了这句话的意思:
proxy_pass http://myups;
此行告诉 nginx 将请求传递给“upstream myups”块中列出的服务器之一。它不会返回到互联网上向 URL 发送 proxy_pass 请求。
换句话说,当请求进入您指定主机名的端口 81 上的 nginx 服务器时,它会将请求传递给 192.168.1.100:6666 或 192.168.1.101:9999。
希望这可以澄清一点。
答案2
您应该仅在“上游”定义内的“服务器”语句中设置端口。
(它监听哪个端口?6666、9999 还是 81?)