私は現在、移行を容易にし、柔軟性を追加するために、さまざまなテクノロジーを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」に応答を書き換えるアウトバウンドルールを作成する方法を知っている人はいますか? 「?
私はサブドメインを使用してこれを解決しました。したがって、代わりに:
www.mydomain.com/mysite1
www.mydomain.com/mysite2
私が使用しているもの:
mysite1.mydomain.com
mysite2.mydomain.com
これは、すべての相対リンクとリダイレクトが以前と同じように機能することを意味します。
ロケーションヘッダーを本当に書き直す必要がある場合は、 このウォークスルーを参照