有没有办法让nginx终止websocket连接并仅将套接字流传递给服务器?



基本上我要做的是在客户端上开始一个安全的websocket连接,通过nginx,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代理函数只是将流转发到后端服务器。我正在为此研究另一种方法,因为让网络服务器完成繁重工作的希望并不容易。