NGINX as a WebSocket Proxy

Илья Шипицин chipitsine на gmail.com
Ср Мар 6 09:02:03 UTC 2024


это очень странная статья. скажем так, между строк ПОДРАЗУМЕВАЕТСЯ, что '
 '' close;' по причине того, что мы наверняка не знаем, есть ли keepalive в
описании бекенде.

по факту сокеты вроде и работают, но рвутся после каждого запроса.

мы по этим же граблям прошлись в свое время

чт, 29 февр. 2024 г. в 20:30, Gena Makhomed <gmm на csdoc.com>:

> Здравствуйте, 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 mailing list
> nginx-ru на nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru
>
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20240306/b55d51db/attachment.htm>


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