質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

Windowsサービス

Windowsサービスは、Windows NTベースの管理システム上のService Control Managerによって走るバックグラウンドサービス処理で、daemonやUNIXサービスに類似しています。

Q&A

解決済

1回答

4863閲覧

IISのリバースプロキシでリダイレクトとクッキーのパスを書き換える方法

naitou

総合スコア141

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

Windowsサービス

Windowsサービスは、Windows NTベースの管理システム上のService Control Managerによって走るバックグラウンドサービス処理で、daemonやUNIXサービスに類似しています。

0グッド

0クリップ

投稿2021/09/10 09:22

Apache HTTPサーバのリバースプロキシでは、下記の設定項目でリダイレクトとクッキーのパスを書き換えれるのは有名かと思います。IISで同等のことを行う為の設定はあるのでしょうか。

ProxyPassReverse
リバースプロキシサーバから受け取るHTTPレスポンスヘッダーの「Location」の書き換える設定。

ProxyPassReverseCookiePath
リバースプロキシサーバから受け取るSet-Cookieの「Path文字列」を書き換える設定。

なお検証環境ですが、Windows10 64bit 20H2 / IIS Version 10.0.19041.1 に RRS(Application Request Routing)3.0をインストールしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/09/11 06:56

URL Rewrite Module 2 は考えましたか?
naitou

2021/09/13 00:01

URL Rewrite 2.0はインストール済みです。
退会済みユーザー

退会済みユーザー

2021/09/13 00:14

使えるかどうか考えましたかという質問です。
naitou

2021/09/13 02:22

すみません。URL Rewrite 2.0とRRS(Application Request Routing)の違いがよくわかっていません。 RRS(Application Request Routing)の機能の一部でURL Rewrite 2.0が利用されているということで正しいでしょうか。まったく別物であれば、URL Rewrite 2.0を使うことは考えておりません。 下記サイトの方法で出来そうですが、まだ検証中です。 https://www.ipentec.com/document/windows-server-iis-application-request-routing-rewrite-redirect-url
退会済みユーザー

退会済みユーザー

2021/09/13 03:34 編集

別物だと思っていたのですが・・・ https://kuttsun.blogspot.com/2020/05/iis-arr-url-rewrite-aspnet-core.html 何にせよ URL Rewrite Module 2.0 はインストール済みとのことですので、参考にされている記事のような Outbound Rules の設定でできるのかもしれませんね。お役に立てずすみません。
naitou

2021/09/13 04:07

URL書き換え機能に相当する部分がURL Rewrite 2.0ということでしょうか。URL Rewrite 2.0はIISにインストール済みの様であまり意識しておりませんでした。ご助言ありがとうございます。 Locationの書き換えは無事できたので、後はCookieの方法を調査しております。
guest

回答1

0

自己解決

web.configで下記の様に記述するこで成功しました。

WebサーバのIPは 192.168.20.4 です。

Proxyサーバを介さない場合にWebサイトは http://192.168.20.4/ で公開されますが、
Proxyサーバを介する場合にWebサイトは http://192.168.20.4/Site1/ で公開されます。

リダイレクトとクッキーPATHには /Site1 が付与されます。

当初の質問の内容とは別ですが、Webサイトで絶対パスによる自サイトリンクがあるとProxyサーバのWebサイトの方を参照してしまい上手く行きません。ProxyサーバのWebサイトで、HTTPヘッダーのRefererの値を見て、そのケースを検出したらリダイレクトや代理要求する必要がありそうです。
リダイレクトは上手く出来ましたが代理要求は面倒そうです。下記サイトで代理要求に関して同じ質問をしている人がいますが、自前で実装している様です。
しかしHTTPヘッダーのコピーが上手く出来ません。それについては別途質問させて頂くかもしれません。
https://atmarkit.itmedia.co.jp/bbs/phpBB/viewtopic.php?topic=28944&forum=7

xml

1<configuration> 2 <system.webServer> 3 <rewrite> 4 <rules> 5 <clear /> 6 <rule name="192.168.20.4用 リバースプロキシ" stopProcessing="true"> 7 <match url="^Site1/(.*)" /> 8 <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 9 <action type="Rewrite" url="http://192.168.20.4/{R:1}" /> 10 </rule> 11 </rules> 12 <outboundRules> 13 <rule name="192.168.20.4用 Cookie 書き換え" preCondition="192.168.20.4用"> 14 <match serverVariable="RESPONSE_Set_Cookie" pattern="(.*)Path=/(.*)" /> 15 <action type="Rewrite" value="{R:1}Path=/Site1/{R:2}" /> 16 </rule> 17 <rule name="192.168.20.4用 リダイレクト書き換え" preCondition="192.168.20.4用"> 18 <match serverVariable="RESPONSE_Location" pattern="(.*)://(.*?)/(.*)" /> 19 <action type="Rewrite" value="/Site1/{R:3}" /> 20 </rule> 21 <preConditions> 22 <preCondition name="192.168.20.4用"> 23 <add input="{SERVER_NAME}" pattern="192.168.20.4" /> 24 </preCondition> 25 </preConditions> 26 </outboundRules> 27 </rewrite> 28 </system.webServer> 29</configuration>

投稿2021/09/15 05:50

naitou

総合スコア141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問