web-dev-qa-db-ja.com

リダイレクト用のARRリバースプロキシアウトバウンドリライトルール

私は現在、移行を容易にし、柔軟性を追加するために、さまざまなテクノロジーを1つのWebサイトに混合することに関する概念実証をまとめようとしています。アイデアは、IIS 7.5ARRリバースプロキシの背後に1つの「マッシュアップ」サイトを作成することです。

当面の間、ARRリバースプロキシはすべてのリクエストをメインサイトに転送します。リクエストは次のとおりです。

 client -> ARR: Get /
 ARR -> Server 1: Get /
 Server 1 -> ARR: 200: /index.htm
 ARR -> client: 200: /index.htm

...ここまでは順調ですね。

たとえば、メインWebサイトのサブサイトとして新しいサイト(別のサーバーのルート)を追加したいとします。単純なインバウンドルールでうまくいきます。

<rule name="sub1" stopProcessing="true">
  <match url="^mySubsite(.*)" />
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
  <action type="Rewrite" url="http://server2/{R:1}" />
</rule>

現在のリクエストは次のとおりです。

 client -> ARR: Get /mySubsite
 ARR -> Server 2: Get /
 Server 2 -> ARR: 200: /index.htm
 ARR -> client: 200: /index.htm

...それでも大丈夫です。

この問題は、server2上のサイトがリダイレクトを送信するときに発生します(ログインページなど)。 SharePointの場合、ユーザーを次の場所にリダイレクトします:/ _ layouts/Authenticate.aspx?Source =%2F ...これは存在しません:

client -> ARR: Get /mySubsite
ARR -> Server 2: Get /
Server 2 -> ARR: 301: /_layouts/Authenticate.aspx?Source=%2F
ARR -> client: 301: /_layouts/Authenticate.aspx?Source=%2F
client -> ARR: Get /_layouts/Authenticate.aspx?Source=%2F
ARR -> client: 404: Not Found

サーバー2「301:/ _ layouts/Authenticate.aspx?Source =%2F」から「301:/mySubsite/_layouts/Authenticate.aspx?Source =%2FmySubsite%2F」に応答を書き換えるアウトバウンドルールを作成する方法を知っている人はいますか? 「?

2
E. Jaep

私はサブドメインを使用してこれを解決しました。したがって、代わりに:

www.mydomain.com/mysite1
www.mydomain.com/mysite2

私が使用しているもの:

mysite1.mydomain.com
mysite2.mydomain.com

これは、すべての相対リンクとリダイレクトが以前と同じように機能することを意味します。

ロケーションヘッダーを本当に書き直す必要がある場合は、 このウォークスルーを参照

1
Sander Rijken