После очередной настройки проксирования websocket сервера, меня все больше удивляет, почему в Nginx нет модуля websocket, c директивами websocket_*?
Модуль нужен не только для красоты конфига, он может хранить под капотом оптимальные дефолт настройки и кучу проверок на отсеивания заведомо инвалидных запросов с точки зрения протокола websocket, и развиваться модуль мог бы так же активно как и сам протокол.
Сейчас мой упрощенный конфиг для проксирования websocket сервера, выглядит так:
location /
{
if ($http_upgrade !~* ^websocket$)
{
add_header Upgrade websocket always;
return 426;
}
proxy_pass http://ws_upstream;
proxy_http_version 1.1;
proxy_read_timeout 300s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
Но по сути он должен выглядеть как-то так:
location /
{
websocket_pass http://upstream;
}
Или так:
location /
{
proxy_pass ws://upstream;
}
Что скажете?