我首先在Stack Overflow上问了这个问题 ,但后来我认为Server Fault可能是一个更好的地方发布它。
我有两个WebSocket服务器都运行在不同的端口比80和443.这两个服务器运行在只有端口80和443打开的防火墙后面。
WebSocket Server A:800 | |-----|FireWall:80 & 443|-----> INTERNET WebSocket Server B:801 |
我正在寻找的是一种让我的客户端连接到WebSocket服务器的方式,而无需知道端口,也无需打开任何其他端口(而不是80和443)的防火墙。
所以我想,也许我的防火墙和WebSocket服务器之间的中介服务器(或代理服务器)可以configuration为当客户端请求www.mywebsite.com/a端口80或443(通过防火墙)中介服务器将客户端连接到WebSocket服务器A.当客户端在端口80或443上询问www.mywebsite.com/b时,中间服务器将其连接到WebSocket服务器B.这是可能的吗? 如果有的话,是否有任何服务器,你可能知道有这个function实现?
在另一个说明(也许不是很不一样), TCP打孔和上面解释的方法之间有什么区别?
看来你需要在你的防火墙和你的服务器之间添加一个反向代理。
通过使用websocket apache模块,您应该能够通过您的反向代理将websocket请求转发到您的服务器。
我会build议在Apache 2.4.5之后的mod_proxy_wstunnel模块。 它允许您从任何端口上从一个URL中继到另一个websocket服务器。
举个例子:
ProxyPass /ws1/ ws://websocketserverA:800/ ProxyPass /ws2/ ws://websocketserverB:801/