众所周知,此时 nginx 稳定版无法代理 tcp 连接。因此,如果 express 和 socket.io 将在同一个端口上工作,我们需要使用其他代理解决方案。
但是还有其他方法可以绕过这个问题:
- 如果我们将 socket.io 设置为监听不同的端口,然后 express 监听。例如:nginx代理80端口到8000端口,express监听8000端口,socket.io监听8001端口,客户端直接连接socket.io到8001端口。
- 使用nginx_tcp_proxy_module我们可以代理 tcp 连接,但我们不能在同一端口上使用 http。所以我们使用这样的解决方案:nginx代理80端口到8000端口和81端口(用于websockets)到8001,express监听8000端口,socket.io监听8001端口,客户端连接socket.io到81端口。
这些方法有什么优点和缺点?