Nginx - 反向代理具有多个路径的 WebSocket 服务器
Nginx - Reverse Proxy a WebSocket server with multiple paths
我想我的问题的答案会很简单,但不幸的是我自己无法弄清楚!
我在服务器 A (192.168.1.1) 上安装了 Nginx 运行 作为服务器 B (192.168.1.2) 上 WebSocket 服务器的反向代理。这最后一个服务器正在侦听端口 1234 并且有 2 个路径,因此我们可以连接到以下地址:
ws://192.168.1.2:1234/path1
ws://192.168.1.2:1234/path2
通过添加以下配置,我已经能够通过代理 (ws://192.168.1.1/websocket/path1) 成功连接到 Path1:
location /websocket/path1 {
proxy_pass http://192.168.1.2:1234/path1;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
现在我想让它足够通用以匹配第二条路径(而不是为 path2 创建类似的规则),我尝试了类似的方法:
location /websocket {
proxy_pass http://192.168.1.2:1234;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
但是这样我无法连接到WebSocket
你知道哪里出了问题吗?
非常感谢您的宝贵时间!
这真的很简单,通过在 url 的末尾放置一个 "slash" 就可以了:
location /websocket/ {
proxy_pass http://192.168.1.2:1234/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
我很确定我已经尝试过那种方法,但似乎我错了! :)
我想我的问题的答案会很简单,但不幸的是我自己无法弄清楚!
我在服务器 A (192.168.1.1) 上安装了 Nginx 运行 作为服务器 B (192.168.1.2) 上 WebSocket 服务器的反向代理。这最后一个服务器正在侦听端口 1234 并且有 2 个路径,因此我们可以连接到以下地址:
ws://192.168.1.2:1234/path1
ws://192.168.1.2:1234/path2
通过添加以下配置,我已经能够通过代理 (ws://192.168.1.1/websocket/path1) 成功连接到 Path1:
location /websocket/path1 {
proxy_pass http://192.168.1.2:1234/path1;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
现在我想让它足够通用以匹配第二条路径(而不是为 path2 创建类似的规则),我尝试了类似的方法:
location /websocket {
proxy_pass http://192.168.1.2:1234;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
但是这样我无法连接到WebSocket
你知道哪里出了问题吗?
非常感谢您的宝贵时间!
这真的很简单,通过在 url 的末尾放置一个 "slash" 就可以了:
location /websocket/ {
proxy_pass http://192.168.1.2:1234/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
我很确定我已经尝试过那种方法,但似乎我错了! :)