浏览 3k
由于服务升级成https了,websocket还是http的,前端通过ws://xxx报错跨域,将前端代码改成了wss,然后打算用nginx再代理回http的地址,现在代理配置了没生效,wss地址一直连接不通,nginx版本为1.20.1,请问会是版本太低导致的问题吗?1.20.1支持websocket配置吗?配置如下:
server {
server_name serverName ;
listen port ssl;
server_name serverName;
ssl_certificate /etc/nginx/cert/server.crt;
ssl_certificate_key /etc/nginx/cert/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location /mqtt {
proxy_pass http://socketIp:port/mqtt;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
}

按点赞数排序
按时间排序
抓包对比下,包括:
1、不使用Nginx时,抓包看下Websocket的握手,包括在浏览器和Nginx上游服务上;
2、使用Nginx时,抓包看下Nginx上游服务。
从你的错误请求来看,貌似url的匹配出问题了,正常应该是返回101,但你返回 了404
location / {
proxy_pass http://inter-router;
proxy_set_header Host ***;
proxy_http_version 1.1;
}
location ^~ /websocket/ {
proxy_pass http://inter-router/websocket/;
proxy_set_header Host ***;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
}
不要把websocket 配置放到通配符里面,那样就全部都是了,只对websocket部分,这样用,示例如上
微信公众号
加入微信群