0

現時点でわかっているように、nginx の安定版は tcp 接続をプロキシできません。したがって、express と socket.io が同じポートで機能する場合は、他のプロキシ ソリューションを使用する必要があります。

ただし、この問題を回避する方法は他にもあります。

  1. socket.io を別のポートをリッスンするように設定すると、express がリッスンします。例: nginx は 80 ポートを 8000 ポートにプロキシし、express は 8000 ポートをリッスンし、socket.io は 8001 ポートをリッスンし、クライアントは socket.io に直接 8001 ポートに接続します。
  2. nginx_tcp_proxy_moduleを使用すると、tcp 接続をプロキシできますが、同じポートで http を使用することはできません。したがって、このようなソリューションを使用します: nginx は 80 ポートを 8000 ポートに、81 ポート (websockets 用) を 8001 にプロキシし、エクスプレスは 8000 ポートでリッスンし、socket.io は 8001 ポートでリッスンし、クライアントは socket.io から 81 ポートに接続します。

これらのアプローチにはどのような利点と欠点がありますか?

4

2 に答える 2

2

私は前面にHaproxyを使用し、公開ポートを1つだけ使用することを好みます。「ルート化」はパスごとに行われます。

構成は次のようになります (多くのチュートリアル/リソースを簡単に見つけることができます)。

frontend all 0.0.0.0:80

    acl is_websocket path_beg /websocket/
    use_backend nodejs if is_websocket
    default_backend nginx

backend nodejs
   server srv_node 127.0.0.1:16852

backend nginx
   balance roundrobin
   server srv_static 127.0.0.1:8080
于 2013-02-09T11:22:03.917 に答える
-1

Varnish と Nginx でそれを行うことができます - http://blog.dealspotapp.com/post/40923117591/websockets-with-varnish-and-multiple-nginx-backends

またはHaproxyを使用 - http://blog.dealspotapp.com/post/41226162147/websockets-with-haproxy-ssl-and-multiple-backends

Haproxy を使用する場合は、トンネルのタイムアウトを 1 日などの長い値に設定してください。そうしないと、数秒ごとに新しいソケットが作成されます。

于 2013-02-09T22:30:27.133 に答える