全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1264|回复: 8

[Windows VPS] 关于nginx反向代理ws配置疑问

[复制链接]
发表于 2021-6-24 23:19:10 | 显示全部楼层 |阅读模式
大家好,我也遇到这个问题
https://**blogs.com/Irving/p/10725867.html

他的解决方法是单独配置 websocket 的地址

熟悉nginx配置大佬们,能不能不单独配置 websocket 的地址
只有侦测到客户端带的请求头有 upgrade,才传给上游呢?
发表于 2021-6-25 00:14:00 | 显示全部楼层
地址应该是https://c_nblogs.com/Irving/p/10725867.html  这都算敏感字,酵死人了

  1. http {
  2.         map $http_upgrade $backend {
  3.         default http://127.0.0.1:11111;
  4.         websocket http://127.0.0.1:22222;
  5.     }
  6.     location / {
  7.         proxy_set_header Upgrade $http_upgrade;
  8.         proxy_pass $backend;
  9.     }
  10. }
复制代码

  1. location / {
  2.     if ($http_upgrade = websocket) {
  3.         proxy_set_header Upgrade $http_upgrade;
  4.         proxy_pass http://127.0.0.1:2222;
  5.     }
  6.     ...
  7. }
复制代码

发表于 2021-6-24 23:24:46 | 显示全部楼层
被和谐了,不过你可以全局ws不是更快乐
发表于 2021-6-24 23:25:17 | 显示全部楼层
本帖最后由 G.K.D 于 2021-6-24 23:27 编辑

没看明白你要说的意思。

你的意思是,如果头部带有 upgrade 标识,就反代传到上游服务器。如果没有,就不反代?

另外,你这个链接。。。
 楼主| 发表于 2021-6-25 03:18:06 | 显示全部楼层
G.K.D 发表于 2021-6-24 23:25
没看明白你要说的意思。

你的意思是,如果头部带有 upgrade 标识,就反代传到上游服务器。如果没有,就不 ...

就正常反代。

因为全部都加上upgrade请求头,上游服务器会400 bad request
 楼主| 发表于 2021-6-25 03:21:05 | 显示全部楼层
dunce 发表于 2021-6-25 00:14
地址应该是https://c_nblogs.com/Irving/p/10725867.html  这都算敏感字,酵死人了

太感谢了!我试试
发表于 2021-6-25 05:54:47 来自手机 | 显示全部楼层
试试看看过程
发表于 2021-6-25 08:57:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2021-6-25 09:53:39 | 显示全部楼层
本帖最后由 G.K.D 于 2021-6-25 10:00 编辑
KusakabeSi 发表于 2021-6-25 03:18
就正常反代。

因为全部都加上upgrade请求头,上游服务器会400 bad request


那这很简单,在 server {} 外面加一个 map:
  1. map $http_upgrade $connection_upgrade {
  2.     default upgrade;
  3.     '' '';
  4. }
复制代码

这个 map 的作用就是客户端头部带 upgrade 就向上游发 upgrade,不带就不发,这样就满足你要求了。
如果 $http_upgrade 有内容,那么 $connection_upgrade 就等于 upgrade,反之就等于 ''。

反向代理 location 里加上这个
  1. proxy_http_version 1.1;
  2. proxy_set_header Upgrade $http_upgrade;
  3. proxy_set_header Connection $connection_upgrade;
复制代码


如果带 upgrade 实际发送的头部是:
  1. Upgrade websocket;
  2. Connection upgrade;
复制代码

如果不带 upgrade 实际发送的头部是:
  1. 没有~
复制代码

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-27 02:52 , Processed in 0.079178 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表