大家好,我也遇到这个问题
https://**blogs.com/Irving/p/10725867.html
他的解决方法是单独配置 websocket 的地址
熟悉nginx配置大佬们,能不能不单独配置 websocket 的地址
只有侦测到客户端带的请求头有 upgrade,才传给上游呢?
热议
推荐楼 dunce
- location / {
if ($http_upgrade = websocket) {
proxy_set_header Upgrade $http_upgrade;
proxy_pass http://127.0.0.1:2222;
}
...
}
2楼 jqbaobao 昨天23:24
被和谐了,不过你可以全局ws不是更快乐
3楼 G.K.D 昨天23:25
没看明白你要说的意思。
你的意思是,如果头部带有 upgrade 标识,就反代传到上游服务器。如果没有,就不反代?
另外,你这个链接。。。
5楼 KusakabeSi 7小时前
没看明白你要说的意思。
你的意思是,如果头部带有 upgrade 标识,就反代传到上游服务器。如果没有,就不 ...
就正常反代。
因为全部都加上upgrade请求头,上游服务器会400 bad request
6楼 KusakabeSi 7小时前
地址应该是https://c_nblogs.com/Irving/p/10725867.html这都算敏感字,酵死人了
太感谢了!我试试
7楼 hcyme 5小时前
试试看看过程
8楼 POMAH 1小时前
感谢二楼大佬分享,收藏了。
这个 map 的作用就是客户端头部带 upgrade 就向上游发 upgrade,不带就不发,这样就满足你要求了。
如果 $http_upgrade 有内容,那么 $connection_upgrade 就等于 upgrade,反之就等于 ''。
反向代理 location 里加上这个
- proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
如果带 upgrade 实际发送的头部是:
- Upgrade websocket;
Connection upgrade;
如果不带 upgrade 实际发送的头部是:
- 没有~
申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。
评论前必须登录!
立即登录 注册