YARP の概要
YARP (さらに別のリバース プロキシ) は、.NET 用の高度にカスタマイズ可能なリバース プロキシ ライブラリです。 これは、堅牢で柔軟でスケーラブルで、セキュリティで保護され、使いやすいプロキシ フレームワークを提供するように設計されています。 YARP は、開発者が特定のニーズに合わせて調整された強力で効率的なリバース プロキシ ソリューションを作成するのに役立ちます。
リバース プロキシの機能
リバース プロキシは、クライアント デバイスとバックエンド サーバーの間に配置されるサーバーです。 クライアント要求を適切なバックエンド サーバーに転送し、サーバーの応答をクライアントに返します。 リバース プロキシには、いくつかの利点があります。
- ルーティング: URL パターンや要求ヘッダーなど、定義済みの規則に基づいて、要求を異なるバックエンド サーバーに送信します。 たとえば、
/images、/api、および/db要求は、イメージ、API、およびデータベース サーバーをルーティングできます。 - 負荷分散: 受信トラフィックを複数のバックエンド サーバーに分散して、特定のサーバーの過負荷を防ぎます。 ディストリビューションにより、パフォーマンスと信頼性が向上します。
- スケーラビリティ: リバース プロキシは、複数のサーバーにトラフィックを分散することで、アプリをスケーリングして、より多くのユーザーと負荷を処理するのに役立ちます。 クライアントに影響を与えずにスケーリング (追加または削除) されたバックエンド サーバー。
- SSL/TLS 終了: バックエンド サーバーから TLS 暗号化と復号化プロセスをオフロードし、ワークロードを削減します。
- 接続の抽象化、URL 空間の分離と制御: 外部クライアントからの受信要求とバックエンドからの送信応答は独立しています。 この独立により、次の点が異なります。
- HTTP のバージョン(HTTP/1.1、HTTP/2、HTTP/3 など)。 プロキシは HTTP バージョンをアップグレードまたはダウングレードできます。
- 接続の有効期間。短いクライアント接続を維持しながら、バックエンドで長時間の接続を行うことができます。
- URL 空間の制御: 受信 URL は、バックエンドに転送する前に変換できます。 これにより、外部 URL が内部サービスにマップされる方法から抽象化されます。 内部サービス エンドポイントは、外部 URL に影響を与えずに変更される可能性があります。
- セキュリティ: 内部サービス エンドポイントは外部の露出から隠され、DDoS 攻撃など、一部の種類のサイバー攻撃から保護できます。
- キャッシュ: 頻繁に要求されるリソースをキャッシュして、バックエンド サーバーの負荷を軽減し、応答時間を向上させることができます。
- バージョン管理: 異なる URL マッピングを使用して、API のさまざまなバージョンをサポートできます。
- 簡略化されたメンテナンス: リバース プロキシは、SSL/TLS ターミネーション やその他のタスクを処理できるため、バックエンド サーバーの構成とメンテナンスが簡略化されます。 たとえば、SSL 証明書とセキュリティ ポリシーは、個々のサーバーではなくリバース プロキシ レベルで管理できます。
リバース プロキシによる HTTP の処理方法
リバース プロキシは、HTTP 要求と応答を次の方法で処理します。
- 要求の受信: リバース プロキシは、指定されたポートとエンドポイントでクライアントからの受信 HTTP 要求をリッスンします。
- 接続の終了: 受信 HTTP 接続はプロキシで終了され、新しい接続は宛先への送信要求に使用されます。
- ルーティング要求: 定義済みのルーティング規則と構成に基づいて、リバース プロキシによって、要求を処理する必要があるバックエンド サーバーまたはサーバーのクラスターが決定されます。
- 要求の転送: リバース プロキシはクライアント要求を適切なバックエンド サーバーに転送し、必要に応じてパスとヘッダーを変換します。
- 接続プール: 送信接続は、接続オーバーヘッドを削減し、HTTP/1.1 の再利用と HTTP/2 および HTTP/3 での並列要求を最大限に活用するためにプールされます。
- 応答の処理: バックエンド サーバーは要求を処理し、応答をリバース プロキシに返します。
- 応答を返す: リバース プロキシはバックエンド サーバーから応答を受信し、クライアントに転送して、必要な応答変換を実行します。
このプロセスにより、クライアントはバックエンド サーバーと直接ではなくリバース プロキシと対話し、負荷分散、セキュリティ、バージョン管理などの利点が得られます。
他のプロキシよりも YARP を選択する理由
YARPには、開発者にとって魅力的な選択肢となるユニークな利点がいくつかあります。
- カスタマイズ: YARP は高度にカスタマイズ可能で、開発者は最小限の労力で特定のニーズに合わせてプロキシを調整できます。
- .NET との統合: ASP.NET Core 上に構築された YARP は、.NET エコシステムとシームレスに統合されるため、.NET 開発者にとって理想的な選択肢となります。
- 拡張性: YARP には豊富な機能拡張ポイントが用意されており、開発者は使い慣れた C# コードを使用して、必要に応じてカスタム ロジックと機能を追加できます。
- スケーラビリティ: 直接転送機能拡張オプションを使用すると、YARP をスケーリングして、ほとんどのリバース プロキシでは実現できないドメイン名とバックエンドのスケーリングをサポートできます。
- 積極的な開発: YARP は Microsoft によって積極的に保守および開発されており、最新のテクノロジとベスト プラクティスが常に反映されています。
- 包括的に管理されるドキュメント: YARP には広範なドキュメントと例が付属しているため、高度な機能を簡単に開始して実装できます。
- オープンソース。 YARP と YARP のドキュメントはオープン ソースです。 投稿、レビュー、フィードバックを歓迎します。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
ASP.NET Core