Node.JSの前でリバースプロキシとしてnginxまたは別のWebサーバーを実行することの利点は何ですか?それは何を提供しますか?
(この質問は、Webページではなく、Webアプリに関する問題を対象としています)。
ありがとうございました。
最大のメリットは、複数のアプリケーションに同じポート(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、tornadoなど)を使用する場合は、ブロックするものを使用しないように注意してください。 Apacheブロック。Nginxはブロックしません。不器用なサーバーで最初にnodejsを使用することの最大の利点の1つを捨てたくありません。
より成熟したソフトウェアをプロキシとして使用すると、セキュリティと信頼性が向上します。 Nginx、Apacheなどは、多数のケースに対してテストされ、何年にもわたって本番環境で使用されてきました。
これらのWebサーバーの機能を使用することもできます。そうしないと、自分で実装するか、node.jsモジュールを使用する必要があります。キャッシング、統計、バランシングなどのように。
一方、node.jsの一部の機能、WebSocket(ポート80では、他のポートを引き続き使用できます)、ページバッファリング、使用するリバースプロキシに応じて、キャッシュとヘッダーの制御などの機能が失われます。
編集:
リバースプロキシは、特にSSLとgzip圧縮を扱う場合に、パフォーマンスの向上に役立ちます。また、他にも多くの利点があります。 Thomas Hunter II(Intrinsic)に感謝します。ここでブログ全体を読む https://medium.com/intrinsic/why-should-i-use-a-reverse-proxy-if-node-js-is-production-ready-5a079408b2ca