A reverse proxy server is a type of proxy server that is deployed between clients and back-end/origin servers, for example, an HTTP server such as NGINX, Apache, etc.. or application servers written in Nodejs, Python, Java, Ruby, PHP, and many other programming languages.
クライアントのリクエストを受け取り、1つ以上のバックエンドサーバーに渡し、その後、サーバーからのレスポンスを取得してクライアントに返送する、ゲートウェイまたは中間サーバーです。これにより、コンテンツが逆プロキシサーバー自体から発信したかのように見えるようになります。
一般的に、逆プロキシサーバーは、プライベートネットワーク上のバックエンドサーバーへのアクセスを制御し保護するための「フロントエンド」として使用される内部向きプロキシです。通常、ネットワークファイアウォールの後ろに展開されます。
これにより、バックエンドサーバーは匿名性を確保してセキュリティを向上させることができます。ITインフラストラクチャでは、逆プロキシはアプリケーションファイアウォール、ロードバランサー、TLS終端、Webアクセラレーター(静的および動的コンテンツのキャッシュ)、およびその他多くの機能として機能することもあります。
この記事では、Linuxシステムで使用できるトップ10のオープンソースの逆プロキシサーバーを紹介します。
目次
1. HAProxy – (TCP/HTTP ロードバランサー)
HAProxy(High Availability Proxy の略称)は、高可用性を備えた TCP および HTTP ベースのアプリケーション向けに構築された、無料でオープンソースの非常に高速で信頼性の高いロードバランサーおよびプロキシングソフトウェアです。
HAProxy は、HTTP リバースプロキシ、TCP プロキシおよびノーマライザー、SSL/TLS 終端装置/イニシエーター/オフローダー、キャッシングプロキシ、HTTP 圧縮オフローダー、トラフィック調整装置、コンテンツベースのスイッチ、FastCGI ゲートウェイなどの機能を持っています。また、DDoS およびサービスの悪用に対する保護機能も備えています。
それは、非同期イベント駆動型のエンジンで、非同期ブロッキングエンジンで駆動されており、非常に高速なI/Oレイヤーと優先度ベースのマルチスレッドスケジューラを組み合わせて、簡単に数万の同時接続を処理できるようになっています。
特に、HAProxyは、PROXYプロトコルを使用してクライアントの接続情報をバックエンドまたはオリジンサーバーに渡すため、アプリケーションがすべての関連情報を取得できるようにしています。
HAProxyの基本的な機能には、プロキシ、SSLサポート、サーバーの状態の監視とその状態、高可用性、負荷分散、スティッキネス(さまざまなイベントをまたいで訪問者を同じサーバーに保持する)、コンテンツの切り替え、HTTPの書き換え、リダイレクト、サーバーの保護、ログ記録、統計などがあります。
2. NGINX – (HTTPおよびリバースプロキシウェブサーバー)
NGINXは、無料でオープンソースの高性能で非常に人気のあるHTTPサーバーおよびリバースプロキシです。また、IMAP/POP3プロキシサーバーとしても機能します。 NGINXは、その高いパフォーマンス、安定性、豊富な機能セット、シンプルで柔軟な設定、および低リソース消費(特に小さなメモリフットプリント)で知られています。
HAProxyのように、NGINXはイベント駆動型アーキテクチャを持っているため、数万の同時接続に問題なく対応できます。これは、HAProxyのPROXYプロトコルを使用しているためです。
NGINXは、ngx_http_proxy_moduleモジュールを使用したキャッシュ付きの高速逆プロキシをサポートしています。これにより、FastCGI、uwsgi、SCGI、MemcachedなどのHTTP以外のプロトコルを介して他のサーバーにリクエストを送信できます。
重要なことは、負荷分散と障害耐性をサポートしており、これは大規模な分散コンピューティングシステムの重要な側面です。ngx_http_upstream_moduleモジュールを使用すると、クライアントからのリクエストを分散するためのバックエンドサーバーのグループを定義できます。
これにより、アプリケーションはより強固で利用可能で信頼性が高く、レスポンス時間とスループットが向上します。さらに、セキュリティに関しては、SSL/TLSの終了およびその他の多くのセキュリティ機能をサポートしています。
おすすめのNginxウェブサーバーに関する記事:
3. Varnish –(リバースキャッシングプロキシ)
Varnish HTTPキャッシュ(またはVarnish Cacheまたは単にVarnish)は、HTTPパフォーマンスを改善するために設計された、ウェブアプリケーションアクセラレーターとしてよく知られる、無料でオープンソースの高性能で非常に人気のあるキャッシングリバースプロキシソフトウェアです。サーバーサイドキャッシングを使用しています。
クライアントとHTTPウェブサーバーまたはアプリケーションサーバーの間に展開されます。クライアントがウェブサーバーから情報やリソースをリクエストするたびに、Varnishは情報のコピーを保存するため、次回に同じ情報をクライアントが要求すると、Varnishはウェブサーバーにリクエストを送信せずにそれを提供します。したがって、サーバーの負荷を減らし、それによってウェブコンテンツの配信速度を高速化します。
Varnishは、Varnish Configuration Language(VLC)として知られる柔軟な構成言語を使用しています。これにより、システム管理者が着信リクエストの処理方法、提供するコンテンツ、および提供元、およびリクエストまたはレスポンスの変更方法などを設定できます。
Varnishは拡張可能です – Varnishモジュール(VMODs)を使用して拡張することができ、ユーザーは独自のモジュールを作成するか、コミュニティ提供のモジュールを使用できます。
Varnishの主な制限はSSL/TLSのサポートの欠如です。 HTTPSを有効にする唯一の方法は、HAProxyやNGINXなどのSSL/TLSターミネーターまたはオフローダーをそれの前に展開することです。
4. Træfɪk -(クラウドネイティブアプリケーションプロキシ)
Træfɪk(発音:Traffic)は、マイクロサービスを展開するための無料でオープンソースであり、モダンかつ高速なHTTPリバースプロキシおよびロードバランサーであり、複数のロードバランシングアルゴリズムをサポートしています。
Kubernetes、Docker、Etcd、Rest API、Mesos/Marathon、Swarm、およびZookeperなど、さまざまなプロバイダー(またはサービス検出メカニズムまたはオーケストレーションツール)とインターフェイスを持つことができます。
その愛すべき機能は、構成を自動的かつ動的に管理し、そのために適切な構成をサービスに発見する能力です。これは、インフラストラクチャをスキャンして関連情報を見つけ、どのサービスが外部からのリクエストを提供しているかを発見することによって行われます。プロバイダーは、Træfɪkにアプリケーションまたはマイクロサービスがどこにあるかを伝えます。
Træfɪkのその他の機能は、WebSockets、HTTP/2、およびGRPCをサポートし、ホットリローディング(再起動なしで構成を継続的に更新)、Let’s Encrypt証明書を使用したHTTPS(ワイルドカード証明書サポート)、およびREST APIを公開します。また、アクセスログを保持し、メトリクス(Rest、Prometheus、Datadog、Statsd、InfluxDB)を提供します。
また、Træfɪkには、イベントを監視するために使用されるシンプルなHTMLベースのWebユーザーインターフェースが付属しています。また、サーキットブレーカー、リトライリクエスト、レート制限、および基本認証もサポートされています。
5. Apache Traffic Server – (リバースおよびフォワードプロキシサーバー)
かつてはYahooが所有していた商用製品で、後にApache Foundationに引き継がれた Apache Traffic Server は、無料でオープンソースの高速キャッシュフォワードおよびリバースプロキシサーバーです。
Traffic Server はロードバランサーとしても機能し、柔軟なキャッシュ階層に参加することができます。Yahooでは1日あたり400 TB以上のトラフィックを処理したことが知られています。
それは、接続を保持し、フィルタリング、またはコンテンツリクエストの匿名化などのセットを備えており、HTTPヘッダーを変更したり、ESIリクエストを処理したり、新しいキャッシュアルゴリズムを設計したりするためのAPIを介して拡張可能です。
6. Squid – (キャッシュおよびフォワーディングHTTPプロキシ)
Squid は、さまざまなプロトコル(HTTP、HTTPS、FTPなど)をサポートする無料でオープンソースのよく知られたプロキシサーバーおよびWebキャッシュデーモンです。リバースプロキシ(httpdアクセラレーター)モードを備えており、着信リクエストを送信データのためにキャッシュします。
リッチなトラフィック最適化オプション、アクセス制御、認証、ログ記録機能などをサポートしています。
7. Pound -(リバースプロキシとロードバランサー)
A Pound is another free and open-source, lightweight reverse proxy and load balancer and front-end for web servers. It is also an SSL terminator (that decrypts HTTPS requests from clients and sends them as plain HTTP to the back-end servers).
HTTP/HTTPSサニタイザー(要求の正確性を検証し、形式が正しいもののみを受け入れる)およびフェイルオーバーサーバー。
8. Apache -(HTTP Webサーバー)
Apache HTTPサーバー(HTTPDとしても知られています)は、地球上で最も人気のあるWebサーバーであり、リバースプロキシとして展開および構成することもできます。
Apacheは、クライアントの要求をバックエンドサーバーにルーティングし、セキュリティを強化し、負荷分散を行い、Webアプリケーションのパフォーマンスを最適化することに優れています。Apacheは中継者として機能することで、着信トラフィックを複数のサーバーインスタンスに効率的に配信し、高可用性とシームレスなユーザーエクスペリエンスを確保します。
その堅牢でカスタマイズ可能な設定オプションにより、リバースプロキシのニーズ、コンテンツキャッシングやアプリケーション配信のために信頼性の高いソリューションを求める組織にとってトップの選択肢となっています。
9. Skipper – (HTTPルーターとリバースプロキシ)
Skipperは、サービスの組み合わせ、Kubernetes Ingressなどの使用例を含む、無料でオープンソースのHTTPルーターおよびリバースプロキシです。
大量の動的に設定されたHTTPルート定義を管理するために構築され、800,000を超えるルート、複雑なルックアップ条件、フィルターでリクエストフローを拡張する柔軟性を特徴としています。
それは、そのまま展開することも、カスタムルックアップ、フィルターロジック、設定ソースを組み込むことで拡張することもできます。
10 Caddy 2 – 自動HTTPS搭載の高速サーバー
Caddy 2は、シンプルさと多機能性で知られるオープンソースのウェブサーバーおよびリバースプロキシで、ユーザーフレンドリーなインターフェースとデフォルトで自動HTTPSを提供し、初心者から経験豊富なユーザーまでアクセスしやすい選択肢となっています。
Caddy 2は、ウェブホスティング、HTTP/2、ロードバランシング、およびプロキシを効率的に処理するよう設計されており、ウェブサイトのパフォーマンスとセキュリティを向上させます。そのオープンソースの性質はコミュニティの貢献を促し、ウェブホスティングやサーバー管理の世界での使いやすさとモダンな機能で人気を博しています。
結論
このガイドではこれで全てです。このリストの各ツールの詳細については、それぞれのウェブサイトをチェックしてください。下のフィードバックフォームを通じてご意見をお寄せください。
Source:
https://www.tecmint.com/open-source-reverse-proxy-servers-for-linux/