Você deve definir a porta em cada entrada server
em upstream
. Se você não fizer isso, o nginx irá configurá-lo para 80
. Então server 10.240.0.26;
significa server 10.240.0.26:80;
.
Você pode definir vários blocos upstream:
upstream production_1234 {
server 10.240.0.26:1234;
server 10.240.0.27:1234;
}
upstream production_4321 {
server 10.240.0.26:4321;
server 10.240.0.27:4321;
}
server {
listen 80;
server_name some.host;
location / {
proxy_pass http://production_1234;
}
}
server {
listen 80;
server_name other.host;
location / {
proxy_pass http://production_4321;
}
}
Outra opção é configurar o DNS local para resolver o nome do host production
para vários IPs e, nesse caso, o nginx utilizará todos eles.
http://nginx.org/r/proxy_pass: If a domain name resolves to several addresses, all of them will be used in a round-robin fashion.
server {
listen 80;
server_name some.host;
location / {
proxy_pass http://production:1234;
}
}