鍍金池/ 問答/PHP  網(wǎng)絡(luò)安全  HTML/ 使用nginx代理wss時 nginx proxy_pass指令為何是http協(xié)

使用nginx代理wss時 nginx proxy_pass指令為何是http協(xié)議?

程序我已經(jīng)測試通過
以下是nginx轉(zhuǎn)發(fā)的配置
我有一點(diǎn)不理解

websocket服務(wù)我使用gatewayworker開了一個websocket服務(wù)

為何轉(zhuǎn)發(fā)里是http

如果我直接訪問這一地址,他又會提示錯誤

location /wss
{
    proxy_pass http://127.0.0.1:8585;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header X-Real-IP $remote_addr;
}

這是什么原理?

回答
編輯回答
別瞎鬧

Nginx本身是一個Server,當(dāng)nginx作為一個代理服務(wù)器運(yùn)行起來的后,用戶A向nginx發(fā)起一個http請求實(shí)際上是一個基于tcp/ip的連接,因?yàn)閔ttp是tcp/ip協(xié)議簇的一個組合協(xié)議。當(dāng)nginx收到請求后nginx會遍歷server實(shí)例下的location模塊數(shù)組,匹配到模塊后讀取模塊配置,proxy_pass參數(shù)作為nginx的下一跳目標(biāo)宿主機(jī),兩個主機(jī)之間需要建立基于傳輸?shù)目尚湃芜B接,而剛好tcp/ip提供連接可靠(面向連接)基于傳輸的特性,因此nginx服務(wù)器和宿主機(jī)之間想要建立一個可靠連接基于tcp/ip進(jìn)行是最佳選擇,當(dāng)nginx解析出proxy_pass參數(shù)的url之后與宿主機(jī)建立起一個基于http的可靠連接似乎順理成章,nginx代理現(xiàn)在已經(jīng)打通了兩邊的連接,那么可以開始運(yùn)輸資源了。

2018年6月15日 08:02
編輯回答
獨(dú)白

這個workerman與thinkPHP的實(shí)戰(zhàn)項(xiàng)目視頻不錯,利用websocket協(xié)議實(shí)現(xiàn)了長連接,來做即時通訊,在線客服。地址 http://study.163.com/course/i...

2017年8月31日 18:13