web-dev-qa-db-ja.com

nginxの「upstream」ディレクティブにはポート設定がありますか?

負荷分散には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.
19
orzzzzz

アップストリーム構成では、ポート(6666および9999)が定義されています。これらは、バックエンドサーバーがリッスンする必要のあるポートです。

この場合、proxy_passディレクティブは追加のポート構成を必要としません。 nginxは、listenディレクティブで定義したport 81をリッスンします

これはあなたがやろうとしたことですか?

http {
    #...
    upstream upstream_1{
        server 192.168.1.100:6666;
        server 192.168.1.101:9999;
    }

    upstream upstream_2{
        server 192.168.1.100:6661;  // other backstream port if you use port 81
        server 192.168.1.101:9991;
    }

    server {
        listen 80;
        #.....
        location ~ /myapp {
            proxy_pass http://upstream_1;
        }
    }

    server {
        listen 81;
        #.....
        location ~ /myapp {
            proxy_pass http://upstream_2;
        }
    }
}
39
Michel Feldheim