首先配置反向代理前已经要把以前配置过的伪静态删除掉,否则保存的时候报错php
如下是反向代理的完整配置,请注意其中的端口号[8000]当前这个端口号就是config\swoole.php
文件中的server.port
配置中的端口号nginx
location ~* \.(php|jsp|cgi|asp|aspx)${
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
}
location /
{
proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
add_header Cache-Control no-cache;
expires 12h;
}
复制代码
须要兼容wss
和ws
协议的可按照如下方式配置,只须要更换location /{}
内的配置接口一兼容数据库
使用宝塔部署项目的直接能够复制下面的代码来替换反向代理配置中
location /{}
位置的代码,改反向代理中的配置,别改错了;apache
location /{
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_read_timeout 360s;
proxy_redirect off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
add_header Cache-Control no-cache;
expires 12h;
}
复制代码
长链接访问地址swoole
#http协议访问下使用ws协议链接socket,不须要加端口,已经被反向代理代理到8000端口
#swoole内部能够一端口兼容多协议
ws://www.test.com
#https协议访问下使用wss协议链接socket
#能够看到当前ws和wss的socket链接方式是同样的,减小了不少配置wss的问题
wss://www.test.com
复制代码
apache
的反向代理配置代码简单,可是繁琐,须要在80
端口和443
的端口上分别作反向代理配置markdown
若是有更好的配置方式,还请指点socket
http.conf开启代理模块jsp
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
复制代码
配置SSLspa
若是是须要HTTPS访问,那就必须的作此配置,否则wss
也是没法使用的代理
Http协议反向代理配置
<VirtualHost *:80>
#...中间的配置不作解释
ProxyRequests Off
ProxyPass /ws ws://127.0.0.1:8000
ProxyPassReverse /ws ws://127.0.0.1:8000 ProxyPass / http://127.0.0.1:8000
ProxyPassReverse / http://127.0.0.1:8000
</VirtualHost>
<VirtualHost *:443>
#...中间的配置不作解释 ProxyRequests Off
ProxyPass /ws ws://127.0.0.1:8000
ProxyPassReverse /ws ws://127.0.0.1:8000
ProxyPass / http://127.0.0.1:8000
ProxyPassReverse / http://127.0.0.1:8000</VirtualHost>
复制代码
实际上80内和443的反向代理配置同样不过,就是要把反向代理的配置放入443的端口配置里面才能实现
这里的http
反向代理配置后访问和nginx
同样,可是
socket
的链接就和nginx
不同了须要在域名后加ws
才能链接上,这个ws
只是虚拟的目录名称,可随便更更名称
长链接访问地址
#http协议下链接socket,注意apache状态下必须在域名后增长/ws由于你的反向代理就是代理到了虚拟目录ws下
ws://www.test.com/ws
#https协议下链接socket,链接地址和http协议下相同
wss://www.test.com/ws
复制代码
若是不肯定用户安装的是apache或者是nginx;但你的长链接在apache下必须加/ws,能够增长一个接口配置返回nginx或者apache,Swoole运行模式下没法得到服务解析器类型,那就使用粗暴的办法加个数据库的系统配置让用户去选择;