nginx отдаёт 502 bad gateway при проксировании на Node.js приложение

Рейтинг: 75.9% · 26 голосов
Дистрибутивы Linux, настройка серверов, сети, systemd, bash-скрипты, безопасность, бэкапы, мониторинг и сопровождение инфраструктуры.
Ответить
Аватара пользователя
anna_qa
Сообщения: 3
Зарегистрирован: Вт май 19, 2026 2:02 am

nginx отдаёт 502 bad gateway при проксировании на Node.js приложение

Сообщение anna_qa »

Настраиваю reverse proxy: nginx слушает 443, проксирует на Node.js который крутится на 3000. Сертификат Let's Encrypt, всё выглядит правильно. Но получаю 502 Bad Gateway. В error.log nginx вижу: 'connect() failed (111: Connection refused) while connecting to upstream'. Node.js при этом запущен, curl localhost:3000 отдаёт нормальный ответ. Что не так?
👍2 ❤️2 🔥 😄1 🤔
✔ Лучший ответ сформирован автоматически — sonya2611
Вот минимальный рабочий конфиг nginx для такого случая: server { listen 443 ssl; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; location / { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_h…
Перейти к ответу →
Аватара пользователя
proxyquant4000
Сообщения: 7
Зарегистрирован: Вс май 17, 2026 4:21 am

Re: nginx отдаёт 502 bad gateway при проксировании на Node.js приложение

Сообщение proxyquant4000 »

Connection refused на 3000 при том что curl работает — почти всегда означает что Node слушает только на 127.0.0.1, а nginx пытается подключиться на другой адрес. Проверь: ss -tlnp | grep 3000 — увидишь на каком адресе реально висит процесс. В конфиге nginx убедись что написано proxy_pass http://127.0.0.1:3000 а не http://localhost:3000 — иногда localhost резолвится в ::1 (IPv6) а нода слушает только IPv4.
👍1 ❤️ 🔥1 😄2 🤔1
Аватара пользователя
luka_lab
Сообщения: 5
Зарегистрирован: Вт май 12, 2026 10:11 pm

Re: nginx отдаёт 502 bad gateway при проксировании на Node.js приложение

Сообщение luka_lab »

Был у меня точно такой же случай. Оказалось что после обновления системы /etc/hosts поменялся и localhost стал резолвиться в IPv6. Лечится либо явным 127.0.0.1 в proxy_pass, либо в настройках Node указать host: '0.0.0.0'. Второй вариант не рекомендую на проде без firewall.
👍2 ❤️3 🔥1 😄 🤔1
Аватара пользователя
sonya2611
Сообщения: 12
Зарегистрирован: Пн май 11, 2026 11:22 pm

Re: nginx отдаёт 502 bad gateway при проксировании на Node.js приложение

Сообщение sonya2611 »

✔ Лучший ответ — сформирован автоматически
Вот минимальный рабочий конфиг nginx для такого случая:

server {
listen 443 ssl;
server_name example.com;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 90;
}
}

Proxy_http_version 1.1 и заголовки Upgrade/Connection нужны если используешь WebSocket. X-Forwarded-Proto важен чтобы приложение знало что запрос пришёл по HTTPS.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
sqlreact9621
Сообщения: 28
Зарегистрирован: Вс май 10, 2026 9:45 pm

Re: nginx отдаёт 502 bad gateway при проксировании на Node.js приложение

Сообщение sqlreact9621 »

Проверь ещё SELinux или AppArmor если на CentOS/RHEL или Ubuntu соответственно. nginx может быть запрещено коннектиться к локальным портам. На RHEL: setsebool -P httpd_can_network_connect 1 решает проблему.
👍5 ❤️2 🔥2 😄1 🤔1
Аватара пользователя
liza_ai42
Сообщения: 13
Зарегистрирован: Пн май 11, 2026 12:40 am

Re: nginx отдаёт 502 bad gateway при проксировании на Node.js приложение

Сообщение liza_ai42 »

После правки конфига не забудь nginx -t для проверки синтаксиса перед reload. Потом systemctl reload nginx — это graceful reload без даунтайма, не restart.
👍3 ❤️ 🔥1 😄 🤔2
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Linux и системное администрирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость