13.10.2026
nginx websocket proxy
Настройка nginx websocket proxy: шаг за шагом
Если вы работаете с реальными временами, например, для чатов, онлайн-игр или систем уведомлений, то websocket — ваш надежный помощник. Но как обеспечить стабильную работу websocket-соединений на вашем сервере? Тут на помощь приходит nginx — мощный и гибкий веб-сервер, который отлично справляется с ролью прокси для websocket.
В этой статье расскажу, как настроить nginx websocket proxy так, чтобы соединения были быстрыми, надежными и безопасными.
Почему именно nginx для websocket?
Nginx — это не только статический сервер или балансировщик нагрузки. Он отлично работает с протоколом WebSocket, умеет удерживать соединения живыми и правильно их проксировать. Это важно, потому что websocket — это «держи соединение открытым», и любой неправильный прокси может привести к разрывам связи.
Основные шаги настройки nginx websocket proxy
- Обновите nginx до последней версии
Для корректной работы websocket убедитесь, что у вас установлена версия nginx 1.3 или выше, поскольку именно в этих версиях появилась поддержка протокола websocket.
nginx -v
Если версия ниже, обновите nginx через менеджер пакетов или соберите из исходников.
- Настройка конфигурационного файла nginx
Добавьте следующий блок в ваш конфигурационный файл (обычно /etc/nginx/nginx.conf или /etc/nginx/conf.d/your_site.conf):
server {
listen 80;
server_name yourdomain.ru;
location /ws/ {
proxy_pass http://127.0.0.1:8080/; # Адрес вашего websocket-сервера
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
# Передача заголовков для корректной работы websocket
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_read_timeout 86400;
proxy_send_timeout 86400;
proxy_buffering off;
}
}
Объяснение ключевых директив:
proxy_set_header UpgradeиConnection "Upgrade"— обязательные для установления websocket соединения.proxy_http_version 1.1— версия HTTP, необходимая для websocket.proxy_read_timeout— чтобы соединение не разрывалось при долгих сессиях.
- Перезапуск nginx
После внесения изменений перезапустите nginx:
sudo systemctl restart nginx
или
sudo service nginx restart
Проверка работы
Чтобы проверить, что websocket корректно проксируется, используйте инструменты вроде Chrome DevTools или специализированные клиенты websocket. Убедитесь, что соединение устанавливается и передает данные.
Советы по безопасности и оптимизации
- Включите SSL для защиты данных, передаваемых по websocket (wss://).
- Настройте ограничения по количеству соединений и тайм-аутам.
- Используйте firewall, чтобы ограничить доступ к websocket-серверу.
Итог
Настройка nginx websocket proxy — это несложно, если следовать правильным шагам. В результате вы получите стабильное и быстрое соединение для своих веб-приложений, что особенно важно для современных систем с реальным временем.
Если у вас остались вопросы или возникли сложности — обращайтесь к профессионалам или ищите дополнительную информацию на профильных форумах.