intra-mart Accel Platform セットアップガイド 第46版 2024-04-01

4.4.2. Internet Information Services(IIS)

4.4.2.1. 前提条件

  • 以降の手順では Windows Server 2012 のキャプチャ画像を使用しますが、上記のどのバージョンの Windows Server でも同じ手順でセットアップできます。
  • ベースURLの設定
    Internet Information Services(IIS) を使用する場合ベースURLの設定が必要です。

コラム

  • ベースURLには <httpまたはhttps>://<IISのIPアドレスまたはドメイン名>:<IISのポート番号>/<コンテキストパス> を設定します。
  • 構築するサーバ環境に応じて適切に設定してください。
  • ベースURLについての詳細は、ベースURLを参照してください。
  • Internet Information Services(IIS) に WebSocket プロトコル をインストール してください。

コラム

  • 以下の手順で Internet Information Services(IIS) に WebSocket プロトコル をインストールできます。
  1. サーバマネージャー を開きます。
  2. 管理メニュー の「役割と機能の追加」をクリックします。
  3. 「役割ベースまたは機能のベースのインストール」を選択し、「次へ」をクリックします。
  4. 「サーバーの選択」にて対象のサーバーを選択し、「次へ」をクリックします。
  5. 「サーバーの役割」の「役割」ツリーで「Webサーバー(IIS)」の配下にある「アプリケーション開発」を展開します。
  6. 「WebSocket プロトコル」を選択し、「次へ」をクリックします。
  7. 「機能」で、「次へ」をクリックします。
  8. 「確認」で、「インストール」をクリックします。
  • Websocket プロトコルに関する情報は、以下のドキュメントを参考にしてください。
  • Internet Information Services(IIS) を稼働させるには「URL Rewrite」と「Application Request Routing」が必要です。
    下記のホームページより実行環境に合わせたインストーラをダウンロードし、以下の手順でセットアップを行ってください。

4.4.2.1.1. URL Rewrite のセットアップ

  1. ダウンロードしたインストーラを実行します。

  2. 「インストール」をクリックします。

    ../../../_images/iis_arr_30beta_1.png
  3. 「完了」をクリックします。

    ../../../_images/iis_arr_30beta_2.png

    以上で URL Rewrite のセットアップは終了です。

4.4.2.1.2. Application Request Routing のセットアップ

  1. ダウンロードしたインストーラを実行します。

  2. 「Install」をクリックします。

    ../../../_images/iis_arr_30beta_3.png
  3. 「Finish」をクリックします。

    ../../../_images/iis_arr_30beta_4.png

    以上で Application Request Routing のセットアップは終了です。

4.4.2.2. 設定

  • Resin へ接続するための設定を行います。
    以降の手順では下記の環境を想定した手順を記載します。
    ../../../_images/iis_arr_boundRules.png

*1 : RewriteLocationHeader はレスポンスヘッダのリダイレクト先の URL(Locationヘッダ)を書き換えます。

intra-mart Accel Platform のコンテキストパス imart
IIS のルート ディレクトリ C:\inetpub\wwwroot
静的ファイルの展開フォルダ C:\imart
Web Application ServerのIPアドレス 192.168.1.1
Web Application Serverのポート番号 8080
ベースURL http://www.example.org/imart
  1. Internet Information Services(IIS) と Resin を接続するための設定ファイル <web.config> を <C:/inetpub/wwwroot> 直下に作成します。

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.web>
        <httpRuntime maxRequestLength="102400" requestPathInvalidCharacters="" />
        <customErrors mode="Off" />
      </system.web>
      <system.webServer>
        <security>
          <requestFiltering>
            <requestLimits maxAllowedContentLength="104857600" />
          </requestFiltering>
        </security>
        <httpErrors errorMode="Detailed" />
        <rewrite>
          <rules>
            <clear />
            <rule name="ReverseProxyInboundStatic" stopProcessing="true">
              <match url="^imart/(?!reverse_proxy/)(.*\.gif|.*\.png|.*\.jpg|.*\.jpeg|.*\.css|.*\.js|.*\.swf|.*\.ico|.*\.svg|.*\.json|.*\.jar|.*\.xml|.*\.yaml|.*\.txt|.*\.html|.*\.htm)$" />
              <action type="None" />
            </rule>
            <rule name="ReverseProxyInboundDynamic" stopProcessing="true">
              <match url="^imart/(.*)" />
              <action type="Rewrite" url="http://192.168.1.1:8080/imart/{R:1}" />
            </rule>
          </rules>
          <outboundRules>
            <rule name="RewriteLocationHeader" preCondition="Redirect Response">
              <match serverVariable="RESPONSE_Location" pattern="^http://192.168.1.1:8080/imart/(.*)" />
              <action type="Rewrite" value="http://www.example.org/imart/{R:1}" />
            </rule>
            <preConditions>
              <preCondition name="Redirect Response">
               <add input="{RESPONSE_STATUS}" pattern="3\d\d" />
              </preCondition>
            </preConditions>
          </outboundRules>
        </rewrite>
      </system.webServer>
    </configuration>
    

    コラム

    web.config とは Internet Information Services(IIS) の構成ファイルです。

    注意

    <web.config> ファイルは IM-Juggling 上では編集できません。
  2. サーバ環境に合わせて web.config 内の下記の要素等を適宜変更します。
    • maxRequestLength, maxAllowedContentLength 属性

      • アップロードのファイルサイズの制限を変更する場合には、maxRequestLength, maxAllowedContentLength 属性の設定を変更してください。(上記の例では 100 MB)

    コラム

    web.config の詳細は以下のリファレンスを参照してください。
  3. インターネット インフォメーション サービス (IIS) マネージャー より「IIS サーバ(ここでは WIN-QDQ41RVOU80)」「Application Request Routing Cache」「機能を開く」の順にクリックします。
    ../../../_images/iis_arr_config_1.png
  4. 「Server Proxy Settings...」をクリックし、「Application Request Routing」画面を表示します。
    ../../../_images/iis_arr_config_2.png
  5. 「Enable Proxy」をチェックし、「Time-out (seconds)」にタイムアウト値を秒単位で設定します。
    「Reverse rewrite host in response headers」のチェックを外します。
    統合Windows認証機能を利用していない場合、「Keep alive」のチェックを外します。
    さらに、「適用」をクリックし、設定を反映します。
    ../../../_images/iis_arr_config_3.png

    注意

    統合Windows認証機能を利用している場合「Keep alive」は必ず有効にしてください。

    コラム

    「Keep alive」をオフにすることで、Bad Gateway エラーを減らすことができます。
    ただし、統合Windows認証機能を利用している場合には「Keep alive」はオフにせず必ず有効にしてください。

    コラム

    「Time-out (seconds)」には Application Request Routing が Resin への接続を切断するまでのタイムアウト時間を設定します。
    テナント環境セットアップを完了するのに十分に大きい値を設定してください。
    ここでは例として 1200 秒を設定しています。
  6. 「変更内容は正常に保存されました。」と表示されていることを確認してください。
    ../../../_images/iis_arr_config_4.png
  7. 続いて、静的ファイル用の仮想ディレクトリを作成します。
    左ペインの「Default Web Site」のサブメニューより「仮想ディレクトリの追加...」をクリックします。
    ../../../_images/iis_arr_virtualsite_1.png
  8. 新規ウィンドウ内で「エイリアス(A)」、「物理パス(P)」を次のように設定し、「OK」をクリックします。

    エイリアス imart
    物理パス C:\imart
    ../../../_images/iis_arr_virtualsite_2.png
  9. 「imart」ディレクトリが作成されていることを確認してください。

    ../../../_images/iis_arr_virtualsite_3.png
  10. インターネット インフォメーション サービス (IIS) マネージャー より「Default Web Site」「URL 書き換え」「機能を開く」の順にクリックします。

    ../../../_images/iis_arr_virtualsite_4.png
  11. 「要求されたURLアドレスに適用される受信規則」と「HTTP 応答のヘッダーまたはコンテンツに適用される送信規則」に下図のように追加されていることを確認します。

    ../../../_images/iis_arr_virtualsite_5.png

4.4.2.3. アクセスログの編集

リバース Proxy の場合、Resin が出力する access.log のソース IP がすべて IIS の IP に変わります。
回避するためには access.log の出力内容を編集します。
  1. <%RESIN_HOME%/conf/resin.xml> ファイルを開きます。

  2. <host id=”” root-directory=”.”> ディレクティブ内に以下の設定を追加して Resin の再起動を行ってください。

    <access-log path='log/access.log'>
      <rollover-period>1D</rollover-period>
      <format>%{X-Forwarded-For}i %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"</format>
    </access-log>
    

    コラム

    access.log についての詳細な設定内容については「Resin Documentation 」を参照してください。