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;
}
}