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

StackOverflow https://stackoverflow.com/questions/458757

質問

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

次のようなものがここで説明されています:

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

ありがとう

役に立ちましたか?

解決

答えはいいえ、IIS7(まだ)はワイルドカードホスト名をサポートしていません( this )。 1つのWebサイトで複数のドメインを提供する場合、今のところ唯一の回避策は、お勧めのとおり、専用IPを使用し、ワイルドカードをサポートするDNSでそれを行うことです。

2013更新

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

2016更新

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

他のヒント

  

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

答えは「はい/いいえ」です。はい、あなたは * .mydomain.comを1つにリダイレクトできる ウェブサイト。いいえ、魔法が入っているから IISではなくDNS。

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

次のステップは、名前を確認することです ワイルドカードの解決策 正しいIPでクエリおよび返信する 住所。 Microsoft DNSを使用している場合 サービス、それはあなたが作成することはできません '*' Aレコード(すでに仮定している DNS MMCにドメインゾーンを作成した)、 次のことを行う必要があります。

  1. %windir%\system32\dns\
  2. に移動します
  3. ゾーンファイルを見つけます。例:
    mydomain.com.dns、メモ帳で開きます
  4. エントリを追加します。例:
     * A IP.IP.IP.IP
  5. ゾーンデータファイルを保存
  6. ゾーンデータをリロードする 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 /、あなた あなたと同じウェブページを取得する必要があります 設定しました。

ソース

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

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

  1. Web Platform Installerのインストール: http://www.microsoft.com/ web / downloads / platform.aspx

    実行して、<!> quot; URL Rewrite <!> quot;を検索し、インストールします。

  2. デフォルトのWebサイトに移動し、<!> quot; URL Rewrite <!> quot;を開きます。

  3. 「<!> quot; Add Rule(s)<!> quot;」をクリックします。右側にあります。

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

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

    使用:正規表現

    パターン:(。*)

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

  5. 新しい条件を追加し(<!> quot; Add .. <!> quot;ボタンをクリック)、設定します:

    条件入力:{CACHE_URL}

    入力文字列の確認:パターンと一致

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

    [OK]をクリックします。

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

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

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

<!> quot; {C:#} <!> quot;および<!> quot; {R:#} <!> quot; <!> quot;テストパターン<!> quotをクリックすると、テストウィンドウが表示されます。正規表現パターンエントリの横にあるボタン。サーバー値の一部を照合して、後で再利用できます。

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

更新2:リンクが壊れています。IIS10にアップグレードすると、ワイルドカードがサポートされます。

UPDATE:これはしばらくの間機能しますが、しばらくすると、複数のリクエストが送られてくるのに襲われました。この方法はお勧めしません。

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

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

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にオーバーヘッドがあるため(ただし一般的には無視できるほど)、よりシンプルであり、パフォーマンスも向上しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top