ワイルドカード ドメインに関して Apache と同じ機能を実現するように IIS7 を構成することは可能ですか? URL で使用されるサブドメイン ユーザーに基づいて、ASP.NET Web アプリケーションでユーザーをルーティングすることに興味があります。
ここに次のようなものが記述されています。
http://steinsoft.net/index.php?site=programming/articles/apachewildcardドメイン
ありがとう
ワイルドカード ドメインに関して Apache と同じ機能を実現するように IIS7 を構成することは可能ですか? URL で使用されるサブドメイン ユーザーに基づいて、ASP.NET Web アプリケーションでユーザーをルーティングすることに興味があります。
ここに次のようなものが記述されています。
http://steinsoft.net/index.php?site=programming/articles/apachewildcardドメイン
ありがとう
答えは「いいえ」です。IIS7は(まだ)ワイルドカードのホスト名をサポートしていません(これを参照)。1つのWebサイトで複数のドメインを提供する場合、現時点での唯一の回避策は、専用IPを使用し、ワイルドカードをサポートするDNSを使用することです。
完全を期すために、IIS8にもこの機能はまだありません。
最後に、Windows2016のIIS10は、ワイルドカードサブドメインをサポートしています。
IIS はワイルドカード ホスト ヘッダーをサポートしていますか? *.mydomain.com をキャプチャして 1 つの Web サイトにリダイレクトできますか?
答えはイエス/ノーです。はい、*.mydomain.com を 1 つの Web サイトにリダイレクトできるためです。いいえ、魔法は IIS ではなく DNS にあるためです。
その方法は次のとおりです
。IIS MMC で、ホスト ヘッダーのない Web サイトを構成し、そのサイトに IP アドレスを割り当てます。(ボックスに 1 つの IP アドレスがある場合は、これをスキップできます)。これにより、Web サイトは特定の IP にバインドされ、IP に送信されるすべての HTTP 要求をリッスンし、完了です :)
次のステップは、名前解決がワイルドカード クエリで機能することを確認し、正しい IP アドレスで応答することです。Microsoft DNS サービスを使用している場合、「*」A レコードを作成することはできません (DNS MMC でドメイン ゾーンを既に作成していると仮定します)。次の手順を実行する必要があります。
%windir%\system32\dns\
* A IP.IP.IP.IP
これを行うと、すべての * が以前に構成した IP に応答することに注意してください。例: abc.mydomain.com、www.mydomain.com、K2k.mydomain.com など。
機能していることを確認するには、ping ユーティリティping (insert anything here).mydomain.com
を試してみてください。IP.IP.IP.IP から応答が得られるはずです。
次に、http:// (ここに任意のものを挿入).mydomain.com/ をブラウズしてみてください。構成したのと同じ Web ページが表示されるはずです。
Microsoft の DNS ではワイルドカード (*) A レコードを作成できませんが、ワイルドカード は作成できCNAME
ます。すべてのサブドメインを特定の IP に誘導するだけであれば、これでうまくいきます。たとえば、 の A レコードがある場合は、 のレコードを追加www.mydomain.com
して、を指すことができます。リクエスト ヘッダーのホスト名は引き続きサブドメインであるため、必要に応じて Web アプリでそれをキャッチして処理できる必要があります。CNAME
*.mydomain.com
www.mydomain.com
Web Platform Installer ( http://www.microsoft.com/web/downloads/platform.aspx ) を使用して「URL Rewrite」モジュールをインストールすると、IIS を使用できます。「*.example.com」のような「A」レコードを追加すると、すべてのサブドメインを IIS サーバーに送信できます。IIS サーバーでは、デフォルトの Web サイトに URL 書き換えルールを追加するだけで、別の URL へのリダイレクトなど、任意の処理を実行できます。ユーザーが「xyz.example.com」などと入力すると、「example.com」にリダイレクトし、すべての不明なサブドメインをルート ドメインに向けることができます。手順は次のとおりです。
Web プラットフォーム インストーラーのインストール: http://www.microsoft.com/web/downloads/platform.aspx
それを実行し、「URL Rewrite」を検索してインストールします。
デフォルトの Web サイトに移動し、「URL 書き換え」を開きます。
右端の [ルールの追加] をクリックします。
ルールに名前を付けて、次のように設定します。
要求された URL: パターンに一致
使用: 正規表現
パターン: (。*)
論理グループ化: すべて一致
新しい条件を追加し ([追加] ボタンをクリック)、次のように設定します。
条件入力: {CACHE_URL}
入力文字列のチェック: パターンに一致
パターン (必要に応じて変更): (http|https)://(.*?)\.rootdomain\.tld
[OK]をクリックします。
アクションまでスクロールして、次のように設定します。
アクション タイプ: リダイレクト
リダイレクト URL (必要に応じて変更): {C:1}://rootdomain.tld{R:0}
「{C:#}」と「{R:#}」は、正規表現パターン エントリの横にある [テスト パターン] ボタンをクリックすると、テスト ウィンドウから取得されます。サーバー値の一部を照合して、後で再利用できます。
また、URL (上記の手順 6 の「{C:1}」) で HTTP/HTTPS を渡す際のヒントを確認することもできます: http://weblogs.asp.net/owscott/url-rewrite- protocol-http-https-in-the-action
更新 2: リンクが壊れています。IIS 10 にアップグレードしてください。ワイルドカードがサポートされるようになりました。
更新:これはしばらくの間機能しますが、しばらくすると、複数のリクエストが殺到しました。この方法はお勧めしません。
DNS レコードが正しく設定されている (*->@ の CNAME レコード) ことを確認してください。問題なく動作します。複数のドメインでテスト済み。
リンクが壊れており、以前は http://pzxc.com/apache-style-wildcard-hostname-rewrite-rules-in-iis でした
IIS 10 以降にアップグレードできないユーザーの場合、リバース プロキシ経由でワイルドカード ホスト名のサポートを有効にすることはそれほど難しくありません。
HTTP の例は以下のとおりですが、その他のセットアップはあと数ステップです。
キャッチオール サイトで書き換えルールを作成して、2 つのサイトにリクエストをディスパッチします。
<system.webServer>
<rewrite>
<rules>
<rule name="site1" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(.*).site1.com$" />
</conditions>
<action type="Rewrite" url="http://localhost:8091/{R:0}" />
</rule>
<rule name="site2" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(.*).site2.com$" />
</conditions>
<action type="Rewrite" url="http://localhost:8092/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
サーバー レベルでは、ARR プロキシ モードをオンにする必要があることに注意してください。
<system.webServer>
<proxy enabled="true" />
</system.webServer>
IIS 10 のワイルドカード ホスト名はよりシンプルであり、ARR にはオーバーヘッドがあるため (ただし、一般的には無視できる)、パフォーマンスも向上します。