概要
TomcatはApplicationサーバーの一種で、JavaのWebアプリケーションを動作させるのによく使う。単独で使用しても問題ないが、一般的にはWebサーバーと連携させて使用する。代表的なところではApacheと連携させることが多いが、何かの事情でWebサーバーにIISを使用する場合に、その連携手順をここにまとめる。
手順・方法
ここではIIS・Tomcatともにインストール済みでそれぞれは単独で動作していることを前提として進める。
1.連携に必要なIISモジュールをセットアップする。
1.1.以下のURLにアクセスしてインストーラをダウンロードする。
1.2.以下のURLにアクセスしてインストーラをダウンロードする。
1.3.「requestRouter_amd64.msi」をインストールする。
インストーラをダブルクリックして進めるだけでインストールが可能。再起動も不要。
1.4.「rewrite_amd64_ja-JP.msi」をインストールする。
インストーラをダブルクリックして進めるだけでインストールが可能。再起動も不要。
2.IISマネージャーを開き、「Application Request Routing Cache」をダブルクリックする。
3.「Server Proxy Settings」をダブルクリックする。
4.「Enable proxy」にチェックを入れて、「適用」をクリックする。
5.C:\inetpub\wwwrootに、TomcatにデプロイしているWebアプリケーションと同じ名前のフォルダを作成する。
6.IISマネージャーで、画面左の「フォルダ」を選択した状態で、「URL書き換え」をクリックする。
7.「空の規則」をダブルクリックする。
8.以下のように指定して、「適用」をクリックする。

「パターン」のところを「(.*)」にする、
「URLの書き換え」のところを「TomcatのURL/{R:1}」にするのがポイント。
8.設定は以上となるので、あとはクライアントPCからアクセスして確認する。
これまではhttp://ホスト名:8080/ext/・・・ でアクセスしていたところを、
http://ホスト名/ext/・・・ でアクセスできるようになる。
この方法だと、IISに証明書設定をすればhttpsでアクセスできるようにもなる。
注意点.URLのなかに動的な値(例えばidなど)を含めるアクセスがある場合
値のなかに/(スラッシュ)や+(プラス)があると不具合が発生する
あまりパスのパラメータは使わない方がいいがどうしてもという場合の対処を記載しておく。
Tomcatの起動オプションに以下を追加。
-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=TRUE
IISのweb.configを以下のように変更。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true">
<requestLimits maxUrl="8192" maxQueryString="8192" />
</requestFiltering>
</security>
<rewrite>
<rules useOriginalURLEncoding="false">
<rule name="ToTomcat" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://localhost:8888{UNENCODED_URL}" appendQueryString="false" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>







