Proxy WebSocket服务器和防火墙
我有两个WebSocket服务器,都运行在80和443之外的不同端口上。这两台服务器运行在防火墙后面,防火墙只打开端口80和443Proxy WebSocket服务器和防火墙,proxy,websocket,firewall,url-redirection,Proxy,Websocket,Firewall,Url Redirection,我有两个WebSocket服务器,都运行在80和443之外的不同端口上。这两台服务器运行在防火墙后面,防火墙只打开端口80和443 WebSocket Server A:800 | |-----|FireWall:80 & 443|-----> INTERNET WebSocket Server B:801 | 我正在寻找的是一种方法,使我的客户端能够连接到WebSocket服务器,而无需知道它们的端口,也无需我打开任何其他端口(而不
WebSocket Server A:800 |
|-----|FireWall:80 & 443|-----> INTERNET
WebSocket Server B:801 |
我正在寻找的是一种方法,使我的客户端能够连接到WebSocket服务器,而无需知道它们的端口,也无需我打开任何其他端口(而不是80和443)的防火墙
所以我在想,也许可以在我的防火墙和WebSocket服务器之间配置一个中间服务器(或代理服务器),当客户端要求在端口80或443上www.mywebsite.com/a
时(通过防火墙)中间服务器将客户端连接到WebSocket服务器A。当客户端在端口80或443上请求www.mywebsite.com/b
时,中间服务器将客户端连接到WebSocket服务器b。这可能吗?如果是这样的话,您是否知道有任何服务器实现了此功能
另一方面(可能没有太大不同),与我上面解释的方法有什么区别?这称为“WebSocket反向代理”。在防火墙和WebSocket服务器之间需要另一个逻辑或物理节点。您可能正在同一个系统上运行所有三个节点,这就是我提到“逻辑”的原因
这一领域正在迅速变化,解决方案也相当不成熟。对于您的案例,最好的选择可能是使用。有关详细信息,请搜索“WebSocket反向代理”。有点老了,但应该给你一个合理的选择概述
更新:看起来WebSocket代理支持昨天刚登陆Nginx:,多亏了他的回答中提供的@kanaka,我成功地配置了HAProxy以基于URI重定向我的请求。这就是我所做的: 一旦你
make
HAProxy,你可以在usr/local/sbin
下找到HAProxy。脚本使用配置文件的-f
标志运行。查看/etc/
,如果您没有任何haproxy.cfg
只需mkdir-p/etc/haproxy
,然后vi/etc/haproxy.cfg
并粘贴您的配置。版本1.5的配置文件描述了其中可以使用的所有参数。这就是我的haproxy.cfg
文件的外观:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
uid 99
gid 99
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
option http-server-close
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend public
bind *:80
acl is_websocket1 path_beg -i /a # if the path starts with /a
acl is_websocket2 path_beg -i /b # if the path starts with /b
use_backend ws1 if is_websocket1
use_backend ws2 if is_websocket2
default_backend www
backend www
timeout server 30s
server www1 127.0.0.1:8001 # the port we have our webserver running on
backend ws1
timeout server 600s
server ws1 127.0.0.1:800 # the port we have our websocket server 1 running on
backend ws2
timeout server 600s
server ws2 127.0.0.1:801 # the port we have our websocket server 2 running on
@kanaka,Kaazing呢?他们有websocket反向代理吗?@Pacerier不确定(有一阵子没看过了)。但是如果你发现了,请发回这里。如果你在防火墙后控制一切,这绝对是可能的。