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