1、問題
使用WebSocket在本地是沒有問題的,能夠和前端進(jìn)行正常交互,但是將項(xiàng)目部署到服務(wù)器上,發(fā)現(xiàn)和前端建立不了WebSocket的連接,打開瀏覽器控制臺報錯:This request has been blocked; this endpoint must be available over WSS.
2、理解
1、首先我們要明白 wss協(xié)議實(shí)際是websocket+SSL,就是在websocket協(xié)議上加入SSL層,類似https(http+SSL)。
2、利用nginx代理wss【通訊原理及流程】
(1)、客戶端發(fā)起wss連接連到nginx
(2)、nginx將wss協(xié)議的數(shù)據(jù)轉(zhuǎn)換成ws協(xié)議數(shù)據(jù)并轉(zhuǎn)發(fā)到Workerman的websocket協(xié)議端口
(3)、Workerman收到數(shù)據(jù)后做業(yè)務(wù)邏輯處理
(4)、Workerman給客戶端發(fā)送消息時,則是相反的過程,數(shù)據(jù)經(jīng)過nginx/轉(zhuǎn)換成wss協(xié)議然后發(fā)給客戶端
3、關(guān)于 ws 和 wss
WebSocket可以使用 ws 或 wss 來作為統(tǒng)一資源標(biāo)志符,類似于 HTTP 或 HTTPS。其中 ,wss 表示在 TLS 之上的 WebSocket,相當(dāng)于 HTTPS。默認(rèn)情況下,WebSocket的 ws 協(xié)議基于Http的 80 端口;當(dāng)運(yùn)行在TLS之上時,wss 協(xié)議默認(rèn)是基于Http的 443 端口。說白了,wss 就是 ws 基于 SSL 的安全傳輸,與 HTTPS 一樣樣的道理。所以,如果你的網(wǎng)站是 HTTPS 協(xié)議的,那你就不能使用 ws:// 了,瀏覽器會 block 掉連接,和 HTTPS 下不允許 HTTP 請求一樣。
4、解決
前提,服務(wù)器已經(jīng)配置好了Nginx。如果沒有配置的可以去網(wǎng)上搜索,很多資料的。如果找不到資料的小伙伴可以看文章的最后,我會把我的nginx配置貼出來。
在前端將:ws:// 修改為:wss://即可,同時,后面不要跟IP地址加端口,要使用網(wǎng)站的域名,例如:
本地websocket鏈接:ws://192.168.0.46:8781/tf/webSocket/huozhu20220819
>
那么更新到哦服務(wù)器的時候,鏈接應(yīng)該修改為:wss://網(wǎng)站域名/tf/webSocket/huozhu20220819
注意:這里直接使用域名是在Nginx做了代理,可以根據(jù)url自動匹配到對應(yīng)的IP地址+端口文章來源:http://www.zghlxwxcb.cn/news/detail-408698.html
5、Nginx配置
server
{
listen 80;
listen 443 ssl;
server_name 域名;
ssl on;
ssl_certificate 證書.crt;
ssl_certificate_key 證書.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2; #按照這個協(xié)議配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location /wss/ {
proxy_pass http://127.0.0.1:82/; #通過配置端口指向部署websocker的項(xiàng)目
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
感謝:
1、https://www.jianshu.com/p/581d4b777615
2、https://blog.csdn.net/qq_35808136/article/details/89677749文章來源地址http://www.zghlxwxcb.cn/news/detail-408698.html
到了這里,關(guān)于解決 This request has been blocked; this endpoint must be available over WSS.的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!