プロキシサーバーとトンネリング

インターネットのさまざまなネットワークをナビゲートするときに、プロキシサーバーと HTTP トンネルは、World Wide Web上のコンテンツへのアクセスを容易にしています。プロキシはユーザーのローカルコンピュータ、またはユーザーのコンピュータとインターネット上の送信先サーバーの間の任意の場所に配置できます。このページではプロキシに関するいくつかの基本を概説し、いくつかの設定オプションを紹介します。

プロキシには、フォワードプロキシ (またはトンネルまたはゲートウェイ) とリバースプロキシ (負荷分散、認証、復号化またはキャッシュ用のサーバーへのアクセスを制御および保護するために使用される) の2種類があります。

フォワードプロキシ

フォワードプロキシまたはゲートウェイ、または単に「プロキシ」は、クライアントまたはクライアントグループにプロキシサービスを提供します。インターネットには数十万もの公開プロキシが存在する可能性があります。グループによって使用される帯域幅を減らして制御するために、インターネットサービス (DNS や Web ページなど) を格納して転送します。

フォワードプロキシは匿名プロキシにすることもでき、ユーザーは Web をブラウズしたり他のインターネットサービスを使用している間に自分の IP アドレスを隠すことができます。TOR (The Onion Router) は、匿名性のために複数のプロキシを介してインターネットトラフィックをルーティングします。

リバースプロキシ

その名前が示すように、リバースプロキシはフォワードプロキシとは逆の動作を行います。フォワードプロキシはクライアント (またはリクエストホスト) に代わって動作し、リバースプロキシはサーバーに代わって動作します。フォワードプロキシはクライアントの ID を隠すことができますが、リバースプロキシはサーバの ID を隠すことができます。リバースプロキシにはいくつかのユースケースがありますが、次のとおりです。

  • ロードバランシング:複数の Web サーバーに負荷を分散し、
  • 静的なコンテンツをキャッシュする:写真のような静的コンテンツをキャッシュすることによって Web サーバーをオフロードし、
  • 圧縮:コンテンツを圧縮して最適化し、読み込み時間を短縮します。

プロキシを介してクライアント情報を転送する

プロキシは、プロキシのIPアドレスから発信されたようにリクエストを表示させることができます。 これはクライアントの匿名性を提供するためにプロキシを使用する場合に便利ですが、それ以外の場合は元のリクエストの情報が失われます。 元のクライアントの IP アドレスは、デバッグ、統計、またはロケーション依存のコンテンツの生成によく使用されます。 この情報を公開する一般的な方法は、次の HTTP ヘッダーを使用することです。

標準化されたヘッダー:

Forwarded
プロキシがリクエストのパスに含まれているときに、変更または失われたクライアント側のプロキシサーバー側からの情報が含まれます。

あるいは事実上の標準バージョン:

X-Forwarded-For
HTTP プロキシまたはロードバランサを介して Web サーバーに接続しているクライアントの発信元 IP アドレスを識別します。
X-Forwarded-Host
クライアントがプロキシまたはロードバランサへの接続に使用した元のホストを識別します。
X-Forwarded-Proto
クライアントがプロキシまたはロードバランサへの接続に使用したプロトコル (HTTP または HTTPS) を識別します。

(クライアントへの接続ではなく) プロキシ自体に関する情報を提供するには、Via ヘッダーを使用できます。

Via
プロキシによって、フォワードとリバースの両方のプロキシが追加され、リクエストヘッダーとレスポンスヘッダーに表示されます。

HTTP トンネリング

トンネリングはデータをカプセル化することによって、パブリックネットワークを介してプライベートネットワークデータおよびプロトコル情報を送信します。HTTP トンネリングは、より低いレベルのプロトコル (TCP) を伝送するために、より高いレベル (HTTP) のプロトコルを使用しています。

HTTP プロトコルは CONNECT と呼ばれるリクエストメソッドを指定します。リクエストされたリソースとの双方向通信を開始し、トンネルを開くために使用することができます。これは、HTTP プロキシの背後にあるクライアントが SSL (つまり HTTPS、443番ポート) を使用してウェブサイトにアクセスする方法です。ただし、すべてのプロキシサーバーが CONNECT メソッドをサポートしているわけではなく、443番ポートのみに限定していることに注意してください。

Wikipedia の HTTP トンネルの記事も参照してください。

Proxy の自動設定 (PAC)

プロキシ自動設定(PAC)ファイルは、Web ブラウザリクエスト (HTTP、HTTPS、および FTP) を直接宛先に送信するか、Web プロキシサーバーに転送するかを決定する JavaScript 関数です。PAC ファイルに含まれる JavaScript 関数は、次の関数を定義します。

auto-configファイルは拡張子が .pac のファイルに保存する必要があります。

proxy.pac

MIME タイプは次のように設定されています。

application/x-ns-proxy-autoconfig

このファイルは FindProxyForURL という関数で構成されています。以下の例は、内部 DNS サーバーが内部ホスト名のみを解決できるように設定されている環境で動作し、解決できないホストに対してのみプロキシを使用することを目標としています。

function FindProxyForURL(url, host) {
  if (isResolvable(host))
    return "DIRECT";
  else
    return "PROXY proxy.mydomain.com:8080";
}

他の例についてはプロキシ自動設定 (PAC) を参照してください。

関連情報

ドキュメントのタグと貢献者

このページの貢献者: silverskyvicto, teoli
最終更新者: silverskyvicto,