Имеет ли директива nginx "upstream" параметр порта? - PullRequest
18 голосов
/ 20 сентября 2010

Я использую 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 Ответ

36 голосов
/ 25 октября 2012

в исходящей конфигурации у вас определены порты (6666 и 9999), это те порты, которые ваши серверные серверы должны прослушивать

в этом случае директиве proxy_pass не требуется дополнительная настройка порта. Ваш nginx прослушивает port 81, который вы определили в директиве listen

Это то, что вы пытались сделать?

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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...