NGINX - 将webSocket连接到相同的初始http连接

时间:2016-12-18 23:28:28

标签: nginx websocket

我有一个场景,我正在尝试在nginx中配置,我有许多进程,每个进程从端口8000,8001监听...在建立到这些端口之一的http连接后,我得到客户端(在javascript)建立WebSocket连接。所有侦听进程都具有相同的/ SS websocket端点。但是,如果http连接最初与8000建立连接,则还需要建立与8000的websocket连接。我有以下nginx配置:

upstream backends {
    server 127.0.0.1:8000;
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
}

include /etc/nginx/conf.d/*.conf;

server {
        location / {
           proxy_pass_header Server;
           proxy_set_header Host $http_host;
           proxy_redirect off;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Scheme $scheme;
           proxy_pass http://backends;
        }

        location /SS {
           proxy_set_header Host $host;
           proxy_pass http://backends;
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection "upgrade";
        }

但是,这并不会将websocket路由到与初始连接相同的位置。

我想到了一种方法,我为每个进程设置了不同的端点,并通过初始的http请求传递了这个。我会让客户端使用此端点进行WebSocket连接。但是,这需要我在nginx中配置所有不同的端点。我想知道是否有更好的方法可以在nginx配置中解决这个问题?

0 个答案:

没有答案