localhost - это зарегистрированное служебное имя. В конфиге оно у вас обозначает ваш локальный хост сопоставимый 127.0.0.1 и одновременно пул серверов для балансировки. Соответственно у вас логическая ошибка.
Вероятнее ваш конфиг должен выглядеть примерно так:
http {
upstream MyNodeApp {
// ip_hash - лучше также установить, подробнее можно тут глянуть
// https://nginx.org/en/docs/http/load_balancing.html
ip_hash;
server node1:3000;
server node2:3000;
}
server {
listen 80;
// Если нужно просто отвечать на запрос с 80 порта, на любое имя, то server_name можно закомментировать
server_name my-server-name.ru;
location / {
proxy_pass http://MyNodeApp;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}