我有一个场景,我正在尝试在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配置中解决这个问题?