Локально WebSocket может подключаться без проблем, а на сервере через Nginx сразу падать или зависать. Это типичный признак неправильного проксирования.

Из-за этого не работают чаты, уведомления, статусы заказов, панели мониторинга и все интерфейсы с обновлением в реальном времени.

Коротко: нужно проверить Upgrade-заголовки, proxy_http_version, таймауты, SSL и адрес backend-сервиса.

Почему возникает проблема

Nginx по умолчанию не всегда передает WebSocket как нужно. Часто отсутствуют Upgrade и Connection, стоит короткий timeout, перепутан ws/wss или backend слушает другой порт.

Что проверяю в первую очередь

  • какой URL использует клиент: ws или wss
  • передает ли Nginx Upgrade-заголовки
  • какой порт слушает backend
  • нет ли короткого proxy_read_timeout
  • что видно в access/error логах

Как исправляю

Я проверяю подключение напрямую и через Nginx, затем правлю конфиг прокси и таймауты.

  • добавляю proxy_http_version 1.1
  • передаю Upgrade и Connection
  • настраиваю wss через HTTPS
  • увеличиваю таймауты
  • проверяю sticky/session логику при масштабировании

Что подготовить перед обращением

  • ссылка на сайт или кабинет
  • скриншот проблемы
  • пример пользователя, заказа или события
  • время, когда ошибка повторялась
  • доступы или выгрузка логов без лишних персональных данных

Какой результат нужен

WebSocket стабильно подключается через домен, не обрывается сразу и корректно передает события.

Чего лучше не делать

Не открывайте backend-порт наружу как постоянное решение. Лучше правильно настроить reverse proxy.

Вопросы и ответы

Почему локально работает?

Потому что локально нет промежуточного proxy, который может менять протокол.

Нужен ли отдельный location в Nginx?

Часто да, для websocket-пути удобнее задать отдельные настройки.

Что делать за Cloudflare?

Проверить поддержку WebSocket и режим SSL.

Нужна похожая задача?

Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Коротко опишите проблему, приложите ссылку, скриншот, лог ошибки или пример заказа, и я подскажу, с чего безопасно начать исправление.

Итог

WebSocket через Nginx обычно чинится настройкой Upgrade, HTTP/1.1, таймаутов, wss и правильного backend-порта.