Nginx - 使用反向代理技术在多个路径下代理WebSocket服务器

3

我猜我的问题的答案很简单,但是不幸的是我自己没能弄明白!

我在A服务器(192.168.1.1)上运行Nginx,作为B服务器(192.168.1.2)上WebSocket服务器的反向代理。这个服务器监听1234端口,并有两个路径,所以我们可以连接到以下地址:

ws://192.168.1.2:1234/path1
ws://192.168.1.2:1234/path2

我已经成功通过代理连接到路径1(ws://192.168.1.1/websocket/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。

你有什么想法是哪里出了问题吗?

非常感谢您的时间!

1个回答

9
很容易,只需在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";
}

我非常确定我已经尝试过那种方式,但似乎我错了! :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接