nginx - 有没有办法让 nginx 终止 websocket 连接并只将套接字流传递给服务器?
问题描述
基本上我要做的是在客户端建立一个安全的 websocket 连接,通过 nginx 来终止 tls,而不是仅仅将 websocket 连接代理到服务器,让 nginx 处理 websocket 升级,然后将套接字流数据发送到 tcp 服务器或 unix 域套接字。
现有的 nginx 模块和配置有可能吗?
proxy_pass 可以通过 unix 域套接字连接到服务器
proxy_pass http://unix:/tmp/backend.socket:/uri/;
但是这意味着它仍然通过 unix 域套接字说 http 并且服务器负责处理 websocket 升级。我正在尝试让 nginx 进行升级,以便只有原始套接字流数据才能到达我的服务器。
有点像 proxy_pass 和 fastcgi_pass 之间的混合。
我是否必须修改其中一个模块才能使其成为可能,或者是否有某种方法可以将其配置为工作?
解决方案
所以我最终意识到代理只是代理而不解析协议。nginx 中没有内置任何东西(尽管 apache 中的 mod_ws 可能会这样做)可以实际处理 websockets 协议,nginx 代理功能只是将流转发到后端服务器。我正在为此研究另一种方法,因为希望让网络服务器完成繁重的工作并不容易。
推荐阅读
- java - 在 Android Studio 中的 Card View 上添加点击效果波纹效果
- python - 计算温度异常的滚动平均值-python
- python-3.x - 使用 matplotlib 绘制值并通过查看图表找到最小值
- vim - 如何粘贴指定行号的寄存器的内容?
- ruby-on-rails - 从通过 Shrine 上传到 S3 的图像动态创建 MiniMagick 蒙太奇
- lua - 收到此代码的错误。试图制作一个 lua 脚本,当玩家杀死玩家时奖励玩家 Roblox
- python - PIL getpalette() 返回无
- amazon-web-services - 云提供商是否对机器人流量收费
- r - 在R中为命名向量重载`$`
- excel - “对象”全局的方法“范围”失败