AWS ALB とアプリケーションサーバーの間でリバースプロキシはまだ必要ですか?

AWS ALB とアプリケーションサーバーの間でリバースプロキシはまだ必要ですか?

コンテクスト

アプリケーション サーバーを使用した Web アプリケーション (例: Ruby on Rails と puma)。Fargate を使用した AWS ECS 上のコンテナ内で実行されます。トラフィックは、AWS Application Load Balancer によって、コンテナ内で実行されているアプリケーション サーバーに直接ルーティングされます。

質問

ALB とアプリケーション自体の間、つまりサイドカー コンテナーとして、リバース プロキシはまだ必要ですか? どのような利点がありますか?

答え1

リバース プロキシは必須ではありませんが、Rails に付属する Web サーバーには最小限の機能が備わっているため、公開され、将来的に拡張される可能性のあるアプリケーションの場合は、早い段階でリバース プロキシ (Nginx など) を統合することをお勧めします。

たとえば、これにより、他の Web サーバー実装よりもずっと簡単に、高度なレート制限機能、キャッシュ機能、エンドツーエンドの SSL 終了機能を実現できます。ログ記録もずっと簡単になり、アプリケーションに負荷がかかっている場合は、TCP 再試行などの機能が役立ちます。

サイドカーは必要ありません。アプリケーションと同じボックスに Nginx をインストールできます。非常に効率的で、アプリケーションのパフォーマンスに影響を与えません。

私たちは Rails の前で複数の Nginx プロキシを使用しており、1 日に数十億件の http リクエストを処理しています。

Cloudflare などの大規模なリバース プロキシ実装も Nginx 上に構築されています。

答え2

ロード バランサはリバース プロキシの一種です。その利点には、特定のポートでトラフィックを受け入れること、一種のファイアウォールとして機能すること、サーバーに到達する特定の種類の攻撃を防ぐことなどがあります。

一般的な Web アプリの場合、ロード バランサーと 2 番目のリバース プロキシの両方を使用することによる大きなメリットは見当たりません。

関連情報