nginx сначала подтверждает, что версия должна быть1.3
над
由于后期项目修改 现在将ws地址改为 wss://school.zhuzhida.vip/ws
map指令的作用:
该作用主要是根据客户端请求中$http_upgrade 的值,来构造改变$connection_upgrade的值,即根据变量$http_upgrade的值创建新的变量$connection_upgrade,
创建的规则就是{}里面的东西。其中的规则没有做匹配,因此使用默认的,即 $connection_upgrade 的值会一直是 upgrade。然后如果 $http_upgrade为空字符串的话,
那值会是 close。
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 имеет проверку токена для первого сеанса службы ws.Отключение соединения из-за недостаточных разрешений является нормальным явлением.
2. Проверка внешней сети nginx forwardingwscat -c schoolsocket.zhuzhida.vip