Nginx - 反向代理具有多个路径的WebSocket服务器

Bru*_*tus 2 reverse-proxy nginx websocket

我想我的问题的答案将非常简单,但遗憾的是我自己无法弄明白!

我在服务器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
Run Code Online (Sandbox Code Playgroud)

通过添加以下配置,我已经能够通过代理(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";
}
Run Code Online (Sandbox Code Playgroud)

现在我想使它足够通用以匹配第二条路径(而不是为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";
}
Run Code Online (Sandbox Code Playgroud)

但是这样我无法访问WebSocket.

你知道什么是错的吗?

非常感谢您的宝贵时间!

Bru*_*tus 5

这真的很容易,它通过在URL的末尾添加"斜线"来实现:

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";
}
Run Code Online (Sandbox Code Playgroud)

我很确定已经尝试过这种方式,但看起来我错了!:)