所以我有我的最后一个“反向代理”问题固定关于“映射”一个端口到子文件夹再次感谢这个真棒社区。
我已经能够使用这个解决scheme了一段时间,但现在我面临一个新的问题。 情况是:
有一个网页设置(使用nginx)与此urlhttp://test.domain.com:8042/view.html 。 我需要各种各样的原因,这个端口变成一个子文件夹,并实现它(帮助),并获得http://test.domain.com/view/view.html 。
这个proxy_pass是:
location ~/view(.*)$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host:$server_port; proxy_pass http://test.domain.com:8042$1;
这个很棒。 我可以通过http://test.domain.com/view/view.html访问该页面。 这个页面上有几个websocket,其中一个也有8042端口。这个工作正常。 但是,其他websockets有不同的端口,例如8159.我已经添加了一个相应的proxy_pass到nginxconfiguration:
location ~/cantrace(.*)$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host:$server_port; proxy_pass http://test.domain.com:8159$1;
从Javascript这个websocket被称为通过
my_websocket = new WebSocket('ws://test.domain.com/cantrace/ws');
但是这不起作用。 也没有
my_websocket = new WebSocket('ws://test.domain.com/view/cantrace/ws');
但是,工作是什么?
http://test.domain.com:8042/view.html
然后加载view.html上的其他websocket
my_websocket = new WebSocket('ws://test.domain.com/cantrace/ws');
这以前没有工作。
所以很显然,带有/ view和/ cantrace的双重proxy_pass在这里是一个问题。 有没有办法解决这个与Nginx?
非常感谢你!
帕特里克
我有这样的设置来访问一个反向代理后面的两个服务器,我相信你的proxy_passs指令缺less一个尾随/ ,这是我的设置:
location / server1 {
proxy_pass http:// server1:8081 /;
proxy_bufferingclosures;
}
location / server2 {
proxy_pass http:// server2:8082 /;
proxy_bufferingclosures;
}
在你的情况下,这将转化为:
proxy_pass http://test.domain.com:8042/$1;