現時点でわかっているように、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 にプロキシし、エクスプレスは 8000 ポートでリッスンし、socket.io は 8001 ポートでリッスンし、クライアントは socket.io から 81 ポートに接続します。
これらのアプローチにはどのような利点と欠点がありますか?