Nginx作為Web服務(wù)器一個(gè)重要的功能是反向代理,可用于管理從外部網(wǎng)絡(luò )到內部網(wǎng)絡(luò )的連接或任何特定請求。有些用戶(hù)在本地socket測試無(wú)誤后部署發(fā)現WebSocket connection to “xxx/xxx” failed ,導致Nginx反向代理的連接錯誤,這時(shí)該怎么解決?下面一起來(lái)了解下。
相關(guān)閱讀:《Nginx反向代理服務(wù)器配置教程》
從1.3.13版本開(kāi)始,Nginx實(shí)現了特殊的操作模式,如果代理服務(wù)器返回帶有代碼101(切換協(xié)議)的響應,并且客戶(hù)端通過(guò)請求中的“Upgrade”標頭。Upgrade和Connection在內的標頭不會(huì )從客戶(hù)端傳遞到代理服務(wù)器,因此為了讓代理服務(wù)器了解將協(xié)議切換到WebSocket,需要在反向配置中Nginx Location中添加以下代碼:
location /chat/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
}
一個(gè)更復雜的示例,代理服務(wù)器請求中的“Connection”標頭字段的值取決于客戶(hù)端請求標頭中“Upgrade”字段的存在,例如:
http {
map $http_upgrade $connection_upgrade {
default upgrade;
” close;
}
server {
…location /chat/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
默認情況下,如果Nginx代理服務(wù)器在60秒內沒(méi)有傳輸任何數據,連接將會(huì )被關(guān)閉。這里我們可以使用proxy_read_timeout指令增加此超時(shí),或者代碼服務(wù)器可以配置為定期發(fā)送WebSocket ping幀以重置超時(shí)并檢查連接是否仍然存在。
來(lái)源鏈接:https://www.idcspy.com/45211.html
本站聲明:網(wǎng)站內容來(lái)源于網(wǎng)絡(luò ),如有侵權,請聯(lián)系我們,我們將及時(shí)處理。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站