首先配置反向代理前已經(jīng)要把之前配置過的偽靜態(tài)刪除掉,不然保存的時(shí)候報(bào)錯(cuò)以下是反向代理的完整配置,請注意其中的端口號[8000]當(dāng)前這個(gè)端口號就是
config\swoole.php文件中的server.port配置中的端口號
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協(xié)議的可按照以下方式配置,只需要更換location /{}內(nèi)的配置接口一兼容使用寶塔部署項(xiàng)目的直接可以復(fù)制下面的代碼來替換反向代理配置中l(wèi)ocation /{}位
置的代碼,改反向代理中的配置,別改錯(cuò)了;
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;
}
長連接訪問地址
#http協(xié)議訪問下使用ws協(xié)議連接socket,不需要加端口,已經(jīng)被反向代理代理到8000端口
#swoole內(nèi)部可以一端口兼容多協(xié)議
ws://www.test.com
#https協(xié)議訪問下使用wss協(xié)議連接socket
#可以看到當(dāng)前ws和wss的socket連接方式是一樣的,減少了很多配置wss的問題
wss://www.test.com
Apache反向代理配置
apache的反向代理配置代碼簡單,但是繁瑣,需要在80端口和443的端口上分別做反向代理配置
如果有更好的配置方式,還請指點(diǎn)
http.conf開啟代理模塊
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
配置SSL
如果是需要HTTPS訪問,那就必須的做此配置,不然wss也是無法使用的
Http協(xié)議反向代理配置
<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
</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>
實(shí)際上80內(nèi)和443的反向代理配置一樣不過,就是要把反向代理的配置放入443的端口配置里面才能實(shí)現(xiàn)
這里的http反向代理配置后訪問和nginx一樣,但是
socket
的連接就和nginx不一樣了需要在域名后加ws才能連接上,這個(gè)ws只是虛擬的目錄名稱,可隨便更改名稱
長連接訪問地址
#http協(xié)議下連接socket,注意apache狀態(tài)下必須在域名后增加/ws因?yàn)槟愕姆聪虼砭褪谴?/p>
ws://www.test.com/ws
#https協(xié)議下連接socket,連接地址和http協(xié)議下相同
wss://www.test.com/ws
如果不確定用戶安裝的是apache或者是nginx;但你的長連接在apache下必須加/ws,可以增加一個(gè)接口配置返回nginx或者apache,Swoole運(yùn)行模式下無法獲得服務(wù)解析器類型,那就使用粗暴的辦法加個(gè)數(shù)據(jù)庫的系統(tǒng)配置讓用戶去選擇;
————————————————
版權(quán)聲明:本文為CSDN博主「披星戴月的小小文」的原創(chuàng)文章技即,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明央勒。
原文鏈接:https://blog.csdn.net/m0_55606985/article/details/123759359