Frage

Ist das möglich IIS7 konfiguriert die gleiche Funktionalität wie Apache zu erreichen hat in Bezug auf Wildcard-Domains? Ich bin interessiert Benutzer in ASP.NET Web-Anwendung in dem Routing basierend auf Benutzerdomäne in URL verwendet wird.

So etwas wie hier beschrieben wird:

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

Danke

War es hilfreich?

Lösung

Die Antwort ist Nein, IIS7 (noch) nicht unterstützt Wildcard Host-Name (siehe diese ). Wenn Sie möchten, für jetzt mehrere Domain auf eine Website, die einzige Lösung dienen, wie notandy vorgeschlagen wird eine dedizierte IP verwenden und es mit DNS zu tun, der die Unterstützung von Wildcards der Fall ist.

2013-Update

Zur Vollständigkeit ist IIS8 noch nicht über diese Funktion auch nicht.

2016-Update

Schließlich IIS 10 in Windows 2016 unterstützt Wildcard Subdomains.

Andere Tipps

  

Ist IIS Unterstützung Wildcard Host-Header? Kann ich erfassen und umleiten   * .Mydomain.com auf eine Website?

Die Antwort ist Ja / Nein. Ja, denn du bist umleiten können * .mydomain.com einem Webseite. Nein, denn die Magie ist in DNS und nicht IIS.

Hier ist, wie Sie es tun:
Bei IIS MMC, eine Website mit NO-Host konfigurieren Header, weisen Sie eine IP-Adresse der Standort. (Wenn Sie eine IP-Adresse in der Box, dann können Sie diesen Schritt überspringen). Damit wird die Website gebunden die spezifische IP und wird auf alle hören HTTP-Anfragen an die IP senden, und Sie ist fertig :)

Der nächste Schritt ist sicher, Ihren Namen zu machen Auflösung arbeitet für die Wildcard Abfrage und Antwort mit der richtigen IP Adresse. Bei der Verwendung von Microsoft DNS Service, es wird Ihnen nicht erlauben, zu erstellen ein ‚*‘ Ein Datensatz (bereits unter der Annahme, die Domain-Zone in DNS MMC erstellt), Sie müssen folgendes tun:

  1. Navigieren %windir%\system32\dns\
  2. Finden Sie die Zonendatei. Z. B.
    mydomain.com.dns, öffnen Sie sie mit Notepad
  3. einen Eintrag hinzufügen. Z. B.
     * A IP.IP.IP.IP
  4. Speichern Sie die Zonendaten-Datei
  5. Laden Sie die Zonendaten in DNS-MMC.

Beachten Sie, dass durch diese Weise alle * Wille Antwort auf die IP, die Sie früher konfiguriert. Z.B. abc.mydomain.com, www.mydomain.com, K2k.mydomain.com und etc.

Um sicherzustellen, dass es funktioniert, ping versuchen Dienstprogramm ping (insert anything here).mydomain.com und Sie sollten erhalten Antworten von IP.IP.IP.IP

Dann versuchen Browsing, http: // (insert alles hier) .mydomain.com / Sie sollte die gleiche Web-Seite, die Sie konfiguriert haben.

Quelle

Sie können keine Platzhalter (*) A-Eintrag in Microsofts DNS erstellen, aber Sie können ein Wildcard CNAME erstellen. Wenn alles, was Sie zu tun versuchen, ist direkt alle Sub-Domains auf eine bestimmte IP, würde dies funktionieren. Zum Beispiel, wenn Sie einen A-Eintrag für www.mydomain.com haben, könnten Sie einen CNAME Rekord für *.mydomain.com hinzufügen und dass bei www.mydomain.com zeigen. Der Hostname im Request-Header wird immer noch die Sub-Domain sein, so dass Ihr Web-App sollte es fangen kann, und damit umgehen, wenn Sie wollen.

Sie können IIS verwenden, wenn Sie die Web Platform Installer verwenden ( http: // www. microsoft.com/web/downloads/platform.aspx ) und die "URL Rewrite" Modul installieren. Wenn Sie ein „A“ -Eintrag wie „* .example.com“ hinzufügen, können diese alle Sub-Domains auf dem IIS-Server gesendet werden. In dem IIS-Server fügen Sie einfach eine URL Rewrite-Regel auf die Standard-Website zu tun, was Sie wollen, wie auf eine andere URL umleiten. Wenn ein Benutzer gibt, sagen wir, „xyz.example.com“, könnten Sie auf „example.com“ umleiten, und alle unbekannten Subdomains der Stammdomäne verweisen. Die Schritte sind:

  1. Installieren Web Platform Installer: http://www.microsoft.com/ web / downloads / platform.aspx

    Führen Sie es, wenn nach "URL Rewrite", und installieren Sie es.

  2. Gehen Sie auf die Standard-Website, und öffnen Sie "URL Rewrite".

  3. Klicken Sie auf "Add Rule (s)" auf rechte Seite.

  4. Die Regel benennen und legen Sie die folgende:

    Angeforderte URL: Entspricht das Muster

    Mit: Reguläre Ausdrücke

    Muster: (. *)

    logische Gruppierung: Alle

  5. eine neue Bedingung hinzufügen (klicken Sie auf die Schaltfläche "Hinzufügen .." Taste) und setzen:

    Bedingung Eingang: {CACHE_URL}

    Überprüfen Sie, ob Eingabestring: das Muster Spiele

    Muster (ändern je nach Bedarf): |: (.? *) (Http https) // \ .rootdomain \ .tld

    Klicken Sie auf [OK].

  6. Jetzt zum Handeln nach unten scrollen und setzen:

    Action Typ: Redirect

    Umleiten URL (modifiziert, wie erforderlich): {C: 1}: {R //rootdomain.tld: 0}

Die „{C: #}“ und „{R: #}“ aus den Testfenstern kommen, wenn Sie die „Testmuster“ Schaltflächen klicken neben den RegexMuster Einträge. Sie können Teil eines Servers Wert übereinstimmen, und wiederverwenden es später.

Auch können Sie auf der Weitergabe des HTTP / HTTPS in der URL diesen Tipps zur Kasse (die "{C: 1}" in Schritt 6 oben): http://weblogs.asp.net/owscott/url-rewrite-protocol-http-https-in- the-Aktion

Update. 2: Verbindung unterbrochen ist, ein Upgrade auf IIS 10, unterstützt Platzhalter jetzt

UPDATE: Dies funktioniert für eine Weile nach einer Weile ich mehrere Anfragen bombardiert wurde durch kommen. Ich würde diese Methode nicht empfehlen.

Stellen Sie sicher, dass Ihre DNS-Einträge Setup sind korrekt (CNAME-Eintrag von * -> @) und es wird funktionieren einwandfrei. Getestet mit mehreren Domänen.

Link gebrochen ist jetzt verwendet werden http://pzxc.com/apache-style-wildcard- Host-Name-Rewrite-Regeln-in-iis

Für Benutzer, die auf IIS 10+ nicht aktualisieren können, ist es nicht sehr schwierig Wildcard Hostname Support per Reverse-Proxy zu ermöglichen.

Das HTTP-Beispiel ist, wie unten, während andere Setup nur noch ein paar Schritte sind.

  1. Erstellen Sie eine Catch-all-Website, die an * bindet. 80 und kein Hostname
  2. Erstellen erste Seite, die an * bindet. 8091 und keinen Hostnamen
  3. Erstellen zweite Seite, die an * bindet. 8092 und keinen Hostnamen
  4. beide Standorte Testen Sie und ziehen weiter.
  5. Installieren ARR und URL Rewrite-Modul.
  6. Erstellen Sie Rewrite-Regeln auf der catch-all-Website Anfragen an den beiden Standorten zu versenden,

    <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>
    
  

Beachten Sie, dass auf Server-Ebene, ARR-Proxy-Modus eingeschaltet werden muss,

    <system.webServer>
        <proxy enabled="true" />
    </system.webServer>
  

IIS 10 Wildcard-Hostname ist einfacher und hat auch eine bessere Leistung, weil ARR seine Overhead (aber im Allgemeinen vernachlässigbar).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top