Здравствуйте, 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

Ответить