5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【IIS】URL書き換え(URL Rewrite)を使用したポート番号の変更

Last updated at Posted at 2022-09-25

はじめに

社内で調査用にFAQサイトとしてオープンソースの「phpMyFAQ」をWindow Server上に構築しました。
WebサーバーはIISではなくApacheを使用したため、ポート番号は1080番となっている。

その際にポート番号なしのURLを入力して、phpMyFAQサイトの接続できるようにしたい。
調査したところ2つの方法がある。

  • URLのポート番号を表示
  • URLのポート番号を非表示

※今回の記事を書く上では、phpMyFAQではなくテストサイトで試している。

導入方法

URL書き換えを行うには、IISに拡張モジュールを追加する必要があリます。
image.png

「Application Request Routing Chace」のアイコンは、「(PC名)ホーム」側に表示されます。「Default Web Site ホーム」側には表示されません。

URL Rewrite

IISのURL Rewrite(URL書き換え処理)は、Microsoftによって提供されている無償のモジュールです。モジュール名のとおりURLの書き換えのほか、リダイレクトを行います。
下記サイトからURL Rewriteをインストールしてください。

Application Request Routing(ARR)

IISのApplication Request Routing(アプリケーション要求ルーティング処理)は、Microsoftによって提供されている無償のモジュールです。モジュール名のとおりリクエストに対するルーティング機能のほか、負荷分散、ディスクキャッシュの機能を利用できます。
下記サイトからARRをインストールしてください。

URLにポート番号が付かない方法の場合のみ使用します。

URLのポート番号を表示

ポート番号なしのURLを入力した後、ポート番号が表示されたURLにしてApacheのサイトに接続する。
※正確にはポート番号なしのURLは80ポートが省略されている。

変換例
http://localhost/test/index.html
                   ↓
http://localhost:1080/index.html

URL 書き換えの設定

1.IISマネージャーから「URL 書き換え」をクリックします。
2.規則の追加で規則テンプレート内の受信規則から「空の規則」を選択してOKボタンをクリックします。
3.名前を決めます。今回は「test」にしています。
4.正規表現パターンとして「test(.*)」を入力します。
5.アクションの種類として「リダイレクト」を選択します。
6.リダイレクト URL先を入力します。今回は「http://localhost:1080/{R:0}」とします。
image.png

結果

URLのポート番号が表示状態でApacheのサイトに接続されます。
image.png

URLのポート番号を非表示

ポート番号なしのURLを入力した後、そのままのURLでApacheのサイトに接続する。(内部はポート番号が付いたURLに書き換え)

http://localhost/test/index.html

Application Request Routingの設定

1.IISマネージャーから「Application Request Routing」をクリックします。
2.右パネルの操作の「Server Proxy Settings」をクリックします。
3.「Enable proxy」にチェックを付けます。
4.右パネルの操作の「適用」をクリックします。
image.png

URL 書き換えの設定

1.IISマネージャーから「URL 書き換え」をクリックします。
2.規則の追加で規則テンプレート内の受信規則から「空の規則」を選択してOKボタンをクリックします。
3.名前を決めます。今回は「test」にしています。
4.正規表現パターンとして「test(.*)」を入力します。
5.アクションの種類として「書き換え」を選択します。
6.リダイレクト URL先を入力します。今回は「http://localhost:1080/{R:0}」とします
image.png

結果

URLのポート番号が非表示状態でApacheのサイトに接続されます。
image.png

最後に

社内のみで使用するならURLのポート番号が表示状態でも気にならないだろうが、社外に公開するような場合だとURLのポート番号が非表示状態の方が好ましいだろう。

記事を書く際には既に理解したから書いているわけで、そこに至るまでは理解不足でネット検索しまくりである。
URL書き換えでポートを変更するだけなら簡単だろうと思ったんだが、正規表現は合っているのに全然変わらないのである。日本語での検索サイトで探しても一向に分からない。そこでキーワードを英語にして「IIS URL Rewrite port change」にして、「URL Rewrite to specific port - MSDN Forum」を見つける。まさに実現したい内容だった。

日本語訳で「1 つの Web サーバーから (同じ物理サーバー上の) 別の Web サーバーにハンドオフしているため、書き換えではなくリダイレ​​クトを行う必要があります。」と、やっと何を間違えているのかを理解しました。
アクションの種類を「書き換え」から「リダイレクト」にすることでようやく目的を達成することができました。

そこから日本語サイトでのURL書き換えを説明しているサイトの内容を見直し、Application Request Routingを使用した場合にアクションの種類を「書き換え」にする必要があるってことがわかったのです。

参照

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?