NGINX as a WebSocket Proxy

Gena Makhomed gmm на csdoc.com
Чт Фев 29 19:30:21 UTC 2024


Здравствуйте, All!

В статье https://www.nginx.com/blog/websocket-nginx/
рекомендуется такой код:

http {
     map $http_upgrade $connection_upgrade {
         default upgrade;
         '' close;
     }

     upstream websocket {
         server 192.168.100.10:8010;
     }

     server {
         listen 8020;
         location / {
             proxy_pass http://websocket;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection $connection_upgrade;
             proxy_set_header Host $host;
         }
     }
}

При этом в других статьях - для включения keep-alive
рекомендуется такой код:

proxy_http_version 1.1;
proxy_set_header Connection "";

для того, чтобы режим Keep-alive работал между nginx и backend.

Keep-alive connections are enabled by default in HTTP/1.1 while not in 
HTTP/1.0. HTTP/1.0 was designed to close the connection after every 
request between client and server.

может быть в статье на сайте рекомендуется не самая оптимальная
настройка и лучше было бы сделать так:

# cat /etc/nginx/nginx.conf

http {

     map $http_upgrade $connection_upgrade {
         default Upgrade;
         '' '';
     }

     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection $connection_upgrade;
     proxy_set_header Host $host;
}


в таком случае и вебсокеты смогут работать по любому урлу
и при этом keep-alive подключения к backend тоже будут работать.

upstream node {
     server 127.0.0.1:3000;
     keepalive 64;
}


ведь нет же никаких причин разрешать вебсокеты только
по какому-то явно прописанному в конфиге урлу,
а по всем остальным урлам - запрещать?

-- 
Best regards,
  Gena


Подробная информация о списке рассылки nginx-ru