Skip to main content

 

 

 

 
Language:

 

 
 
 
OutSystems

Dockerコンテナ: IISでルーティング規則を設定する

注記: Dockerコンテナへのデプロイに関するシステム要件ネットワーク要件を満たしていることを確認してください。

Dockerコンテナにアプリケーションをデプロイするプロセス(詳細な手順は、「アプリケーションをDockerコンテナにデプロイする」を参照)では、Dockerイメージを作成してインスタンス化します。

この手順の後、コンテナ内のアプリケーションの構成済みデプロイメントゾーンアドレス経由、およびPlatform Serverと同じパブリックアドレス経由で、コンテナ内のアプリケーションにアクセスできることを確認する必要があります。

この例では、Docker Engineがインストールされているマシンで動作するインターネットインフォメーションサービス(IIS)を、簡素化されたメインのロードバランサとリバースプロキシとして利用します。つまり、環境の<パブリックアドレス>はDockerコンテナのデプロイメントゾーンの<ゾーンアドレス>と同じです。

別のルーティングやリバースプロキシソフトウェアを使用している場合は、以下に示す一般的な構成ガイドラインに従い、状況に応じて手順を調整します。

この例では、コンテナで実行されているアプリケーションに関連付けられたルーティングの処理に関して、考えられるいくつかの解決策のうち1つを示しています。ルーティング構成をネットワークチームやDevOpsチームと必ず検証してください。ただし、これは推奨される本番シナリオではないことに留意してください。

以下で説明する手順により、接続を確保するために必要な最小限の構成とIISのルーティング規則を定義できます。

  • OutSystemsプラットフォームとDockerコンテナ内で実行されているサンプルアプリケーションモジュールとの間の接続
  • 外部ユーザーとDockerコンテナ内で実行されているサンプルアプリケーションモジュールとの間の接続

例: 「Directory」Webアプリケーション

DirectoryEmployeesという2つのモジュールを含む「Directory」と呼ばれる簡単なアプリケーションのルーティング規則を構成します。

これは、アプリケーションのデプロイメントゾーン用に構成されたアドレスを使用して2つのアプリケーションモジュールにアクセスできることを確認することが目的です。このアドレスも実際は環境用のパブリックアドレスであることに留意してください。

そのため、この例では2つのモジュールDirectoryEmployeesに、アドレス[<パブリックアドレス>/Directory/<パブリックアドレス>/Employees/]と、同等の [<ゾーンアドレス>/Directory/<ゾーンアドレス>/Employees/]でアクセスできる必要があります。

これを実現するために、リバースプロキシとしてDocker Engineがインストールされているのと同じマシンで動作するIIS を構成します(<ゾーンアドレス>(環境の<パブリックアドレス>)で応答します)。これにより、アプリケーションが実行されているDockerコンテナにリクエストをルーティングできます。

以下の手順を実行します。

1.IISのエクステンションApplication Request RoutingURL Rewriteをインストールします。前者は規則に基づくルーティング構成を定義でき、後者はユーザーフレンドリーなURLの実装に関する規則を定義できます。

1.(オプション) 実行中のコンテナのコンテナIDがまだない場合は、この情報を取得します。

    docker ps

このコマンドにより、コンテナの状態とIDが出力されます。IDは、出力の最初の列にある12桁の16進数文字セットです。

    docker ps
    CONTAINER ID        IMAGE               COMMAND            CREATED        
    cca03df45abd        microsoft/iis       "C:\\Docker..."    About a minute ago

1.コンテナに割り当てられているIPアドレスを取得し、それをメモにとります(後で必要になります)。

    docker inspect --format="" <コンテナID>

1.Application Request Routingのプロキシ設定を構成します。

1.IISマネージャを開いて**サーバー**名をクリックし、「Application Request Routing Cache」モジュールを開き、右サイドバーにある[Server Proxy Settings ...]リンクをクリックします。

1.以下の図に示すように現在の設定を変更し、右サイドバーにある[Apply]をクリックします。

    ![](images/iis-enable-proxy.png)

    以下の設定になっていることを確認します。  
    – [Enable Proxy]に**チェックが付いている**  
    – [Reverse rewrite host in response headers]に**チェックが付いていない**  
    – [Preserve client IP in the following header]が「X-Forwarded-For」に設定されている

1.IISマネージャでサイト名をクリックし、「URL Rewrite」モジュールを開きます。

1.右サイドバーにある[View Server Variables...]をクリックし、サーバー変数HTTP_X_FORWARDED_PROTOという新しいエントリを追加します。

![](images/iis-server-variables.png)

デフォルトでは、サーバー変数がサーバー変数リストで宣言されていない限り、書き換え規則でサーバー変数を変更できません。この変数は、次に作成する書き換え規則で変更する必要があります。

1.サイドバーにある[Back to Rules]をクリックし、以下の図に示すように新しい書き換え規則を作成します。これにより、必要なプロキシプロトコル転送ヘッダーがHTTPSリクエストに追加されます。この例のシナリオではSSLオフロードを使用するためです。
右サイドバーにある[Add rule(s)...]をクリックし、未設定の規則から開始します。
注記:この規則は規則リストの最初の規則である必要があり、すべてのモジュールで共有されます。

![](images/iis-add-header.png)

関連フィールドの値:

Match URL – Pattern: (.*)
Conditions – Input: {HTTPS} | Type: Matches the Pattern | Pattern: ON
Server Variables – Name: HTTP_X_FORWARDED_PROTO | Value: https | Replace: True
Action – Action type: None

右パネルの上部にある[Apply]をクリックして規則を作成します。

1.以下の図に従って、モジュールごとに新しい未設定のルーティング規則を作成します。手順3で取得したコンテナIPアドレスが必要になります。規則に任意の名前を付けます。

![](images/iis-docker-module-rule.png)

関連フィールドの値:

Match URL – Pattern: <モジュール名>/(.*)
Action
– Action type: Rewrite
– Rewrite URL: http://<container_ip>/<モジュール名>/{R:1}
– [Stop processing of subsequent rules]にチェックが付いている

この例に従い、この手順では2つのルーティング規則を作成します。1つは**Directory**モジュールの規則、もう1つは**Employees**モジュールの規則です。

右パネルの上部にある[Apply]をクリックして規則を作成します。

1.(オプション) 以下の図のように、プラットフォームサーバーアドレスのフォールバック規則を構成します。このルールが必要になるのは、コンテナにデプロイされたアプリケーションに、仮想マシンにデプロイされたモジュールのUI要素との依存関係がある場合のみです。
注記: この規則は規則リストの最後の規則である必要があり、すべてのモジュールで共有されます。

![](images/iis-docker-fallback-rule.png)

関連フィールドの値:

Match URL – Pattern: (.*)
Action
– Rewrite URL: http://<platform_server_address>/{R:1}
– [Stop processing of subsequent rules]にチェックが付いている

右パネルの上部にある[Apply]をクリックして規則を作成します。

1.デプロイメントゾーンアドレスを使用してモジュールにアクセスできることを確認します。
この例に従い、アドレス<パブリックアドレス>/Directory/<パブリックアドレス>/Employees/DirectoryモジュールとEmployeesモジュールにアクセスできることを確認します。

注記: 「Global」デプロイメントゾーンにアプリケーションをデプロイし直す場合は、IISに追加された書き換え規則を削除する必要があります。

  • Was this article helpful?