17

nodejsアプリケーションnginxまたはnode-http-proxyの展開に使用するのが望ましいものを教えてください. 最も堅牢なものは何ですか?

私が必要とする基本的な機能は

  • すべてのリクエストを非 80 ポストにプロキシする
  • ロードバランサー
  • Websocket サポート
4

2 に答える 2

35

これは、この件に関する素晴らしい記事ですhttp://www.exratione.com/2012/07/proxying-websocket-traffic-for-nodejs-the-present-state-of-play/

個人的に、私はこの領域で多くの構成を試しましたが、それはすべて、必要なものと展開する必要がある場所に帰着します。独自のハードウェア (またはクラウド スライスなど) を使用していて、Node のみをサポートする必要がある場合、ポート 80 の node-http-proxy は非常に強力で堅牢であり、websockets や ssl などのテクノロジを利用できます。少し頭痛。

ただし、Drupal や Grails サイトなど、サポートする必要がある他のサイトがある場合は、80 で Nginx に直面するのがより標準的な方法です。そうは言っても、必要な CGI 言語に従って node-http-proxy on 80 とプロキシ トラフィックを使用して Nginx がポート 8080 にマウントできない理由はありません。これは私の好みの構成であり、現在本番環境で実行しているものです。今のところとても満足しています。高速で堅牢なため、websocket と ssl を使用する独自の nodejs アプリと共に、RapidWeaver でサイトを構築するクライアントを引き続きサポートできます。

ああ、node-http-proxy を使用した負荷分散は簡単です... この単純なラウンドロビンの例を確認してください https://github.com/nodejitsu/node-http-proxy/blob/master/examples/balancer/ simple-balancer.js

編集:

ポート 80 で node-http-proxy を実行することは、root ユーザーが node を実行する必要があるため、悪い習慣であることがわかりました。代わりに、IP テーブルを使用して、node-http-proxy が実行されている非特権ポートにポート 80 を再ルーティングします。さらに良い設定は、varnish を 80 に設定し (記事にあるように、本格的な Web アプリはその前に HTTP アクセラレータを配置する必要があるため)、非特権ポートで node-http-proxy にリクエストを転送することです。ここからは、ノード サーバーと nginx の間でトラフィックをどのように分割するかはあなた次第です。

2番目の編集:

Nginx が websocket をサポートするようになりました! また、ノードの現在の状態は完全なスタックを提供する能力がありますが、そうすべきであるとは限りません。つまり、技術的には、ドライバーの柄を使って壁に釘を打ち込むことができます...しかし、ハンマーがそこに座っているとしたら、なぜそうするのでしょうか? 統計の提供から複雑な負荷分散まで、Nginx は戦闘でテストされ、最先端のネットワークのいくつかに展開されています。Websocket サポートが追加されたので、簡単です。

于 2012-11-09T15:04:38.047 に答える