web-dev-qa-db-ja.com

IIS7のワイルドカードサブドメイン。 Apacheのようにそれらを作成することは可能ですか?

これは、Apacheがワイルドカードドメインに関して持っているのと同じ機能を実現するようにIIS7を構成することは可能ですか? URLで使用されるサブドメインユーザーに基づいてASP.NET Webアプリケーションでユーザーをルーティングすることに興味があります。

のようなものがここに記述されています:

http://steinsoft.net/index.php?site=programming/articles/apachewildcarddomain

ありがとう

30
GrZeCh

IIS7はワイルドカードホスト名をサポートしていません( this を参照)。 1つのWebサイトで複数のドメインにサービスを提供する場合、現時点での唯一の回避策は、通知されているとおり、専用IPを使用して、ワイルドカードをサポートするDNSでそれを実行することです。

2013アップデート

完全を期すために、IIS8にもこの機能はまだありません。

2016年アップデート

最後に、IIS Windows 2016の10はワイルドカードサブドメインをサポートしています。

41
Daniel Liuzzi

IISはワイルドカードホストヘッダーをサポートしていますか?* .mydomain.comをキャプチャして1つのWebサイトにリダイレクトできますか?

答えは「はい/いいえ」です。はい。*。mydomain.comを1つのWebサイトにリダイレクトできます。いいえ、魔法はIISではなくDNSにあるためです。

方法は次のとおりです。
At IIS MMC、ホストヘッダーなしでWebサイトを構成し、サイトにIPアドレスを割り当てます(ボックスにIPアドレスが1つある場合は、これをスキップします。これで、Webサイトは特定のIPにバインドされ、IPに送信されたすべてのHTTPリクエストをリッスンし、完了します:)

次のステップは、ワイルドカードクエリで名前解決が機能することを確認し、正しいIPアドレスで応答することです。 Microsoft DNSサービスを使用している場合、「*」Aレコードを作成することはできません(DNS MMCでドメインゾーンをすでに作成している場合)、次のことを行う必要があります。

  1. _%windir%\system32\dns\_に移動します
  2. ゾーンファイルを見つけます。例えば。
    mydomain.com.dns、メモ帳で開きます
  3. エントリを追加します。例えば。
    _* A IP.IP.IP.IP_
  4. ゾーンデータファイルを保存する
  5. DNS MMCでゾーンデータをリロードします。

これを行うことにより、すべての*は以前に構成した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ページが表示されます。

ソース

16
notandy

MicrosoftのDNSでワイルドカード(*)レコードを作成することはできませんが、canワイルドカードCNAMEを作成します。すべてのサブドメインを特定のIPに向けるだけの場合、これは機能します。たとえば、www.mydomain.comのAレコードがある場合、*.mydomain.comCNAMEレコードを追加して、www.mydomain.comを指すようにすることができます。リクエストヘッダーのホスト名は引き続きサブドメインであるため、必要に応じてウェブアプリでホスト名をキャッチして処理できる必要があります。

5
Centijo

IIS Web Platform Installer( http://www.Microsoft.com/web/downloads/platform.aspx )を使用し、「 URL Rewrite」モジュール。「*。example.com」などの「A」レコードを追加すると、すべてのサブドメインをIISサーバーに送信できます。IISサーバーでは、デフォルトのWebサイトにURL書き換えルールを追加するだけで、別のURLへのリダイレクトなど、好きなことを実行できます。ユーザーが「xyz.example.com」と入力すると、リダイレクトできます。 「example.com」に変更し、不明なサブドメインをすべてルートドメインにポイントします。手順は次のとおりです。

  1. Webプラットフォームインストーラーのインストール: http://www.Microsoft.com/web/downloads/platform.aspx

    それを実行し、「URL Rewrite」を検索して、インストールします。

  2. デフォルトのWebサイトに移動し、「URL書き換え」を開きます。

  3. 右端の[ルールの追加]をクリックします。

  4. ルールに名前を付け、以下を設定します。

    リクエストされたURL:パターンに一致

    使用:正規表現

    パターン:(。*)

    論理グループ:すべてに一致

  5. 新しい条件を追加し([追加...]ボタンをクリックします)、次のように設定します。

    条件入力:{CACHE_URL}

    入力文字列かどうかを確認:パターンに一致

    パターン(必要に応じて変更):(http | https)://(。*?)\ .rootdomain\.tld

    [OK]をクリックしてください。

  6. 次に、アクションまでスクロールして設定します。

    アクションタイプ:リダイレクト

    リダイレクトURL(必要に応じて変更):{C:1}://rootdomain.tld {R:0}

「{C:#}」と「{R:#}」は、正規表現パターンエントリの横にある「テストパターン」ボタンをクリックすると、テストウィンドウから取得されます。サーバー値の一部を照合して、後で再利用できます。

また、URLのHTTP/HTTPS(上記のステップ6の「{C:1}」)を渡すときにこのヒントをチェックアウトすることもできます。 http://weblogs.asp.net/owscott/ url-rewrite-protocol-http-https-in-the-action

4
James Wilkins

IIS 10+)にアップグレードできないユーザーの場合、リバースプロキシ経由でワイルドカードホスト名サポートを有効にすることはそれほど難しくありません。

HTTPの例は次のとおりですが、他の設定はほんの数ステップです。

  1. *:80にバインドし、ホスト名を持たないキャッチオールサイトを作成します。
  2. *:8091にバインドし、ホスト名を持たない最初のサイトを作成します。
  3. *:8092にバインドし、ホスト名を持たない2番目のサイトを作成します。
  4. 両方のサイトをテストして次に進みます。
  5. ARRおよびURL書き換えモジュールをインストールします。
  6. キャッチオールサイトでリライトルールを作成して、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にオーバーヘッドがあるため(一般的には無視できるほど)、単純であり、パフォーマンスも向上します。

0
Lex Li

更新2:リンクが壊れています。IIS 10にアップグレードしてください。ワイルドカードをサポートしています。

更新:これはしばらく機能しますが、しばらくすると、複数のリクエストが送信されて衝撃を受けました。この方法はお勧めしません。

DNSレコードが正しく設定されていること(*-> @のCNAMEレコード)を確認してください。これで問題なく動作します。複数のドメインでテスト済み。

リンクが壊れています http://pzxc.com/Apache-style-wildcard-hostname-rewrite-rules-in-iis

0
Damon Earl