nginx 代理 websocket


nginx 代理 websocket

nginx 首先確認版本必須是1.3以上

map指令的作用:
該作用主要是根據客戶端請求中$http_upgrade 的值,來構造改變$connection_upgrade的值,即根據變量$http_upgrade的值創建新的變量$connection_upgrade,
創建的規則就是{}里面的東西。其中的規則沒有做匹配,因此使用默認的,即 $connection_upgrade 的值會一直是 upgrade。然后如果 $http_upgrade為空字符串的話,
那值會是 close。

由於后期項目修改 現在將ws地址改為 wss://school.zhuzhida.vip/ws

schoolsocket.zhuzhida.vip.conf

#必須添加的
map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
}
#監聽websocket
upstream websocket {
    #ip_hash;
    #轉發到服務器上相應的ws端口
    server localhost:3344;
    #server localhost:8011;
}
server {
    listen 80;
    server_name schoolsocket.zhuzhida.vip;
    location / {
        #轉發到http://websocket
        proxy_pass http://websocket;
        proxy_read_timeout 300s;
        proxy_send_timeout 300s;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #升級http1.1到 websocket協議 
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection  $connection_upgrade;
    }
}
復制代碼

測試一下

1.確保服務未被轉發前ws端口是否正常

wscat -c localhost:3344
復制代碼

服務器返回權限不足是因為我ws服務首次會話有token校驗,此處返回權限不足斷開連接為正常現象

2.外網測試nginx轉發

 

wscat -c schoolsocket.zhuzhida.vip
復制代碼

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM