首先配置反向代理前已經要把以前配置過的僞靜態刪除掉,否則保存的時候報錯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運行模式下沒法得到服務解析器類型,那就使用粗暴的辦法加個數據庫的系統配置讓用戶去選擇;