前言
SwooleDistributed 3.X可以同时支持HTTP、Websocket和TCP协议,在配置防火墙规则的情况下可以通过IP:PORT
的方式进行HTTP和Websocket的访问,但是这样在生产环境中是不安全的,而且相对来说IP:PORT
的访问方式并不友好,所以就要用到nginx的反向代理了,将80端口的请求反向代理到SwooleDistributed框架监听的端口。
具体配置
现在假设服务器上已经安装了nginx以及SwooleDistributed框架。核心的nginx配置如下:
....
# HTTP请求转发到SwooleDistributed监听的9092端口
location /{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:9092/;
break;
}
# Websocket请求转发到SwooleDistributed监听的9093端口
location /ws{
proxy_pass http://127.0.0.1:9093;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket 支持的核心配置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
# WebSocket超时设置(可选)
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
proxy_redirect off;
break;
}
....
测试结果
我们可以通过浏览器的console
命令行进行测试,也可以使用在线的Websocket测试工具进行测试,这里推荐使用EasySwoole
出品的Websocket在线测试工具,点此打开。
效果如下: