リバース プロキシ - ルール テンプレート

著者 Ruslan Yakushev

ルール テンプレートは、特定のシナリオに対して 1 つ以上の書き換えルールを作成する簡単な方法を提供するために使用されます。 URL Rewrite Module 2 には、一般的な使用シナリオ用のいくつかのルール テンプレートが含まれています。 その URL Rewrite Module UI に加えて、カスタム ルール テンプレートを接続するためのフレームワークも用意されています。 このチュートリアルでは、URL Rewrite Module に含まれている "リバース プロキシ" ルール テンプレートを使用する方法について説明します。 IIS URL Rewrite Module と IIS アプリケーション要求ルーティング処理を使用したリバース プロキシの構成の詳細については、「リバース プロキシと URL Rewrite v2 とアプリケーション要求ルーティング処理」を参照してください。

前提条件

このチュートリアルでは、次の前提条件が必要です:

  • ASP.NET 役割サービスが有効になっている IIS 7.0 以降;
  • URL Rewrite Module 2.0 がインストールされていること;
  • IIS アプリケーション要求ルーティングがインストールされていること。

サンプル Web サイトの作成

わかりやすくするために、このチュートリアルで使用するリバース プロキシ シナリオは 1 台のサーバーに実装され、IIS の "既定の Web サイト" はリバース プロキシ サイトとして機能し、コンテンツ アプリケーションは同じサーバー上の別の IIS Web サイトでホストされます。

サンプル コンテンツ Web サイトを作成するには:

  1. 次のフォルダーに "contentsite" という名前のフォルダーを作成します:

    %SystemDrive%\inetpub\ folder.
    
  2. %SystemDrive%\inetpub\ の下の対応するフォルダーを指す "contentsite" という IIS Web サイトを作成します。 サイトにはポート 8081 を使用します。
    次のコマンドを使用してサイトを作成できます:

    %windir%\System32\inetsrv\appcmd.exe add site /name:"contentsite" /bindings:http/*:8081: /physicalPath:"%SystemDrive%\inetpub\contentsite
    
  3. 次のフォルダーに default.aspx という名前のファイルを作成します:

    %SystemDrive%\inetpub\contentsite
    
  4. 次の ASP.NET マークアップをコピーし、ファイルに貼り付けて、ファイルを default.aspx として保存します:

    <%@ Page Language="C#" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Reverse Proxy Test Application</title>
    </head>
    <body>
        <h1>Reverse Proxy Test Page</h1>
        <p>Requested URL path is <%= Request.ServerVariables["SCRIPT_NAME"] %></p>
        <p><a href="http://<%= Request.ServerVariables["HTTP_HOST"] + Request.ServerVariables["SCRIPT_NAME"] %>">Here</a> is the link to this page.</p>
    </body>
    </html>
    
  5. サイトが正しく動作していることを確認するには、Web 参照を開き、次の URL を要求します:

    http://localhost:8081/default.aspx
    

リバース プロキシ テンプレートを使用してインバウンド規則とアウトバウンド規則を生成する

"リバース プロキシ" ルール テンプレートを使用して、HTTP 要求を別のサーバーにプロキシするために使用されるインバウンド書き換えルールを生成できます。 必要に応じて、テンプレートは、HTML 応答内のリンク URL のホスト名を修正できるアウトバウンド書き換え規則を作成することもできます。 このチュートリアルで説明する例では、プロキシ サーバーのホスト名は localhost で、コンテンツ サーバーのホスト名は localhost:8081 です。 コンテンツ サーバー上の Web アプリケーションは、内部ホスト名を使用する HTML 応答でリンクを生成します。例: http://localhost:8081/default.aspx アウトバウンド規則では、プロキシのホスト名を使用するようにこのリンクが修正されます。例: http://localhost/default.aspx

ルール テンプレートを使用してルールを作成するには、次の手順に従います:

  1. IIS マネージャーで、左側のツリー ビューで "既定の Web サイト" を選択します。
  2. URL 書き換え機能ビューを開きます。
  3. URL 書き換え機能ビューで、"ルールの追加..." アクションを選択し、"リバース プロキシ" テンプレートを選択します:
    Screenshot of the Add Rules dialog box displaying the rule template options. Reverse Proxy is highlighted.
  4. "リバース プロキシ ルールの追加" ダイアログで、次のように入力します:
    HTTP 要求が転送されるサーバー名または IP アドレス: localhost:8081
    "HTTP 応答でリンクのドメイン名を書き換える" チェック ボックスをオンにし、次のように入力します:
    From: localhost:8081
    To: localhost
    Screenshot of the Add Reverse Proxy Rules dialog box.
  5. OK をクリックします。 インバウンド規則とアウトバウンド規則の両方が作成されます:
    Screenshot of the I I S Manager displaying the U R L Rewrite page.

リバース プロキシのテスト

ルール テンプレートによって生成された書き換えルールが正しく動作することをテストするには、Web ブラウザーを開き、http://localhost/default.aspx に対して要求を行います。 IIS "既定の Web サイト" は、この要求を受信し、受信書き換え規則に従って http://localhost:8081/default.aspx にルーティングします。 HTTP 応答が contentsite Web サイトから返されると、アウトバウンド書き換え規則によって HTML 内のリンク URL が変更され、ホスト名が localhost:8081 から localhost に書き換えられます:

Screenshot of a browser window displaying a Reverse Proxy Test Page.

まとめ

このチュートリアルでは、"リバース プロキシ" ルール テンプレートを使用して書き換え規則を生成し、IIS で単純なリバース プロキシ構成を実装する方法について説明しました。 このルール テンプレートは、基本ルールを生成するための開始点として使用できます。基本ルールは、後で調整または変更して、Web アプリケーションに対して必要な特定のルーティングと書き換えの要件に対処できます。