nginx“upstream”指令是否有端口设置?

nginx“upstream”指令是否有端口设置?

移自:https://stackoverflow.com/questions/3748517/does-nginx-upstream-has-a-port-setting

我使用upstreamproxy进行负载平衡。

该指令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?)

相关内容