43

Node.JSの前でリバースプロキシとしてnginxまたは別のWebサーバーを実行することの利点は何ですか?それは何を提供しますか?

(この質問は、Webページではなく、Webアプリに関する問題を対象としています)。

ありがとうございました。

4

3 に答える 3

36

最大の利点は、複数のアプリケーションで同じポート (80) を使用できることです。そうしないと、使用している nodejs アプリケーションごとに新しい IP アドレスが必要になります。設定方法に応じて、異なるポートで実行されている異なる nodejs アプリに異なるフォルダーとサブドメインを構成することもできます。大きなものや複雑なものを構築している場合、これは非常に優れています。あるノード アプリケーションで API を実行し、別のアプリケーションで Web サイトを実行し、別のアプリでログインしている Web サイト (メンバー エリア、ダッシュボードなど) を実行できると想像してください。ロードバランサーは、誰がどこに行く必要があるかを判断できます (example.com/api* -> api.js、example.com/dashboard* -> dashboard.js、example.com -> app.js)。これはスケーリングに役立つだけでなく、すべてが一度に壊れるわけではありません。

成熟したものに、まぁ。Nodejs +永遠に+ node-http-proxy = すごい。最小限の構成/複雑さで、すべてのアプリに対して 1 つのプロキシ サーバーを実行します (失敗の可能性が低くなります)。それから他のすべてを楽しんでください。ただし、内部ポートをファイアウォールで遮断することを忘れないでください;)

一部の人々は負荷分散に注目していますが、これは確かに利点です。ただし、単一のスレッド化されたノンブロッキングの nodejs スレッドで非常に大きな負荷を処理できるため、負荷分散はほとんどの人にとってメリットのあるものではありません。私があなただったら、これを違いとはまったく考えません。ロード バランシングは、必要なときに簡単に実装できますが、実装するまではまったく役に立ちません。

また、ノード以外のプロキシ ソリューション (nginx、tor​​nado など) を使用する場合は、ブロックするものを使用しないように注意してください。Apache ブロック。Nginxはしません。そもそも、扱いにくいサーバーで nodejs を使用することの最大の利点の 1 つを捨てたくはありません。

于 2011-07-20T15:43:33.030 に答える
10

より成熟したソフトウェアをプロキシとして使用すると、セキュリティと信頼性が向上します。Nginx、Apache などは、多数のケースに対してテストされており、何年も本番環境で使用されています。

これらの Web サーバーの機能を使用することもできますが、それ以外の場合は自分で実装するか、node.js モジュールを使用する必要があります。キャッシング、統計、バランシングなど。

反対に、node.js の一部の機能、websockets (ポート 80 では引き続き他のポートを使用できます)、ページ バッファリング、使用するリバース プロキシに応じたキャッシュとヘッダーの制御などのリアルタイム機能が失われます。

編集:

于 2011-07-20T14:42:59.987 に答える
1

リバース プロキシは、特に SSL および gzip 圧縮を扱う場合にパフォーマンスを向上させるのに非常に役立ちます。また、他にもたくさんのメリットがあります。Thomas Hunter II(Intrinsic) に感謝します。ここでブログ全体を読むhttps://medium.com/intrinsic/why-should-i-use-a-reverse-proxy-if-node-js-is-production-ready-5a079408b2ca

于 2019-05-25T08:04:14.643 に答える