Как мне исправить эту ошибку NGINX 502 Bad Gateway?
Я работаю над веб-сокетами в приложении angular. Я подключил его к серверной части Python через nginx. Я обнаружил, что в 90% случаев я получаю 502 ошибки "Плохой шлюз". Я сделаю это:
- Загрузите страницу в браузере и подключите веб-сокет
- Серверная часть Python отправляет данные в интерфейс angular
- Отключить веб-сокет
- Попытка повторно подключить веб-сокет <- 502 Ошибка неверного шлюза
- Жесткая перезагрузка в Chrome
- Загрузите страницу в браузере и подключите веб-сокет <- Нет ошибки 502
Я не могу понять, почему это происходит. Я не могу понять, почему я получаю ошибку 502. Я также не могу понять, почему жесткая перезагрузка решает проблему. Вещи, которые я пробовал:
- Увеличьте уровень журнала nginx для отладки. Но в журналах нет никакой полезной информации.
- Я не храню объекты веб-сокетов в состоянии. Я делаю это на случай, если что-то где-то кешируется.
- Я всегда закрываю веб-сокет с кодом закрытия 1000
- Я вручную запускаю службу python на сервере, чтобы посмотреть ее. При возникновении ошибки 502 сервис не показывает ничего необычного.
- Установка nginx max_fails в 0. Установка fail_timeout в 0. Ни одно из этих изменений, похоже, не имеет никакого эффекта. (Я нашел это предложение в других ответах SO)
Что мне нужно искать, чтобы решить эту проблему?
РЕДАКТИРОВАТЬ: Вот мой файл nginx conf.d:
server {
listen 80;
index index.html;
root /var/www/mysite;
location / {
access_log /var/log/nginx/mysite/ui.access.log;
error_log /var/log/nginx/mysite/ui.error.log;
try_files $uri $uri/ /index.html;
}
location /ws/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Host $proxy_host;
proxy_pass http://WEBSOCKET/;
access_log /var/log/nginx/mysite/ws_services.access.log;
error_log /var/log/nginx/mysite/ws_services.error.log;
proxy_read_timeout 300s;
}
}
upstream WEBSOCKET {
ip_hash;
server 127.0.0.1:8765;
}
0 ответов
Не та же проблема, что и у OP, но на всякий случай кто-нибудь столкнется с этим и имеет ту же настройку, что и я:
Я использовал WebSockets через SSL (поэтому
wss://
протокол) и выскочил 502, хотя конфигурация работала раньше. Конфиг был такой:
...
proxy_pass http://127.0.0.1:8080;
...
В бэкэнде я использовал узел с
ws
пакет для создания сервера websocket
Как я уже сказал: он работал раньше, но внезапно перестал работать. Дополнительно nginx написал
upstream prematurely closed connection while reading response header from upstream
ошибки в журнал ошибок. Я полагаю, что либо nginx, либо node закрыли какую-то проблему с безопасностью, из-за чего установка больше не работает.
Что мне нужно было сделать, чтобы он заработал, так это использовать https вместо http для
proxy_pass
config
...
proxy_pass https://127.0.0.1:8080;
...