IIS 10とTomcat 8.5をApplication Request Routingで連携

昔は
Webサーバー:IIS
アプリケーションサーバー:Tomcat
の構成を取るとき、mod_jkを使用していたかと思います。

最近は、ルーティングを行うIIS拡張が用意されているようで、こちらを使用すれば
狙った動作が行えるようです。
Application Request Routingを使ってみた

早速試してみます。


IIS



こちらの手順でインストールしたWindows Server 2016 + IIS 10.0の環境でテストしました。
Windows Server 2016 にIIS 10.0をインストールし、ASP.NETを有効化




Application Request Routing



こちらからインストーラーをダウンロードしました。
Application Request Routing

811_01.png


「ARRv3_0.exe」が取得できますので、実行します。
「インストール」をクリックしてインストールを実行。

811_02.png


ライセンスの確認です。
「同意する」をクリックするとインストールが開始されます。

811_03.png


インストール終了。「完了」をクリックします。

811_04.png


「終了」でインストーラーを終了します。

811_05.png


インストール後、IISマネージャーの画面を見ると、
・Application Request Routing
・URL書き換え
の機能が追加されています。

811_06.png




ルーティング



こちらで作成したサーブレットにルーティングしてみます。
Eclipse TomcatPluginでサーブレットアプリケーションの作成

ちょっとプログラムを修正しました。


  1. package sample;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. @WebServlet("/SampleServlet")
  10. public class MyServlet extends HttpServlet {
  11.     private static final long serialVersionUID = 1L;
  12.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  13.         // 要求文字コードのセット
  14.         request.setCharacterEncoding("UTF-8");
  15.         // 応答文字コードのセット
  16.         response.setContentType("text/html; charset=UTF-8");
  17.         // 出力ストリームの取得
  18.         PrintWriter out = response.getWriter();
  19.         // クライアント(ブラウザ)への出力
  20.         out.println("<html lang=\"ja\">");
  21.         out.println("<head><title>Servletテンプレート</title>");
  22.         out.println("</head><body>");
  23.         out.println("<h1>Servletのテンプレートです。</h1>");
  24.         out.println("<img src=\"img/banar.png\">");
  25.         out.println("");
  26.         out.println("</body></html>");
  27.         // 出力ストリームを閉じる
  28.         out.close();
  29.     }
  30. }




今後のテスト用にimg/banar.pngを表示するように修正しています。

811_07.png


※バナーの作成はこちらのサイトを利用させていただきました。
進撃の巨人ロゴジェネレーター




IISの設定画面から「Application Request Routing」を選択。

811_08.png


右側「Proxy」の項目にある「Server Proxy Settings...」をクリック。

811_09.png


先頭の「Enable proxy」にチェックをつけて有効にします。

811_10.png


画面をスクロールして一番下「Proxy Type」の設定です。
「Use URL Rewrite to inspectioncoming requests」にチェック。
今回SSLは使用しないので、「Enable SSL offloading」のチェックは外しました。

「Reverse proxy」の項目に、サーブレットが動いているサーバーのIPとポートを入力します。
※今回は「192.168.1.4:8080」

入力が終わったら「適用」をクリックして内容を反映させます。

811_11.png


「URL書き換え」の項目を開きます。

811_12.png


新しくルールが追加されました。

811_13.png


内容を見てみると、http://192.168.1.4:8080/[パラメーター]に書き換えられることが確認できます。

811_14.png


IISが動いているサーバーは「192.168.1.102」です。
http://192.168.1.102/sample/SampleServletにアクセスすると、ちゃんとサーブレットが実行されました。

811_15.png






除外設定



画像はIISから配信するよう構成します。
c:\inetpub\wwwroot\sample\imgにbanar.pngという名前でこの画像を配置しました。

811_16.png


「URL書き換え」の画面を表示し、「規則の追加」をクリックします。

811_17.png


表示されるダイアログで「空の規則」を選択し、「OK」をクリック。

811_18.png


ルールの名前は適当に「画像配信」としました。
要求されたURLでは「パターンに一致する」を選択。

パターンは正規表現で指定できます。
今回は「img」ディレクトリへのアクセスはIISで配信するよう構成してみようと思います。
パターンに「.*/img/.*」と入力しました。/img/が含まれているURLはIISで処理します。

811_19.png


画面をスクロールして最下部。
アクションの種類は「なし」
「後続の規則の処理を停止する」にチェックをつけておきます。

811_20.png


新規作成したルールは末尾に追加されます。
サーブレットへproxyする前に処理しないとTomcat側の画像が表示されてしまうので、
右下「上に移動」をクリックして最初にルールが適用されるよう変更しておきます。

811_21.png

811_22.png


ブラウザを更新してやると、ちゃんとIISに配置したバナー画像が表示されました。

811_23.png




【参考URL】

Application Request Routingを使ってみた
関連記事

コメント

非公開コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
Symfoware まとめ

PR




検索フォーム

月別アーカイブ