Nginx websocket


Со стороны Nginx websocket — дополнительные заголовки при проксировании. Ниже приведен пример конфигурационного файла Nginx для приложения на NodeJS, использующего вебсокеты.



Конфигурация Nginx websocket


Конфигурационные файлы добавляются обычно в каталог /etc/nginx/sites-enabled/ на сервере.


Может быть и другой путь, всё зависит от настроек сервиса, которые задаются в /etc/nginx/nginx.conf.

В основном файле с настройками определяются каталоги из которых сервис считывает конфигурацию. Читайте подробнее про структуру и используемые Nginx контексты.



server
 {
     listen *:80;
server_name sitename.com www.sitename.com;

location / {
    root                /home/web/;
    try_files           $uri @nodejs;
}

location @nodejs {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    include             /etc/nginx/proxy_http_headers.conf;
    proxy_cache_bypass $http_upgrade;
    proxy_read_timeout 300s;
}
}


В файле задается корневой каталог сайта, имя сайта с синонимами.

Устанавливается перенаправление запросов в location @nodejs. В нем указан локальный порт 3000. На порту запускается приложение, которое обслуживает запросы.



Также устанавливаются через proxy_set_header необходимые для работы веб-сокетов заголовки, они обеспечивают поддержку технологии со стороны веб-сервера.


После внесения изменений нужно перезапустить веб-сервер.



Как проверить работу веб-сокетов


В режиме разработчика браузера Firefox (он открывается при нажатии F12 на клавиатуре) можно посмотреть запросы, которые происходят по протоколу Websocket. Чтобы видеть только их можно отметить значение фильтра WS.


Nginx websocket


В случае если запросы не проходят в консоли будут ошибки с кодом 500 или другие ошибки.

Подробное описание протокола и принципов обработки запросов можно найти в документации mozilla.



Чаще всего технология Websocket используется в приложениях на nodejs.



Читайте о том как запустить проект на nodejs на Linux сервере и настроить его стабильную работу в production.

Материал можно использовать как руководство по настройке, несколько строк из настоящей статьи позволит добавить для приложения поддержку websocket в Nginx.

Сказать спасибо