Wildcard Sub-Domains in IIS7. Ist es möglich, sie zu machen, wie es in Apache ist?
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
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:
- Navigieren
%windir%\system32\dns\
- Finden Sie die Zonendatei. Z. B.
mydomain.com.dns, öffnen Sie sie mit Notepad - einen Eintrag hinzufügen. Z. B.
* A IP.IP.IP.IP
- Speichern Sie die Zonendaten-Datei
- 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.
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:
-
Installieren Web Platform Installer: http://www.microsoft.com/ web / downloads / platform.aspx
Führen Sie es, wenn nach "URL Rewrite", und installieren Sie es.
-
Gehen Sie auf die Standard-Website, und öffnen Sie "URL Rewrite".
-
Klicken Sie auf "Add Rule (s)" auf rechte Seite.
-
Die Regel benennen und legen Sie die folgende:
Angeforderte URL: Entspricht das Muster
Mit: Reguläre Ausdrücke
Muster: (. *)
logische Gruppierung: Alle
-
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].
-
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.
- Erstellen Sie eine Catch-all-Website, die an * bindet. 80 und kein Hostname
- Erstellen erste Seite, die an * bindet. 8091 und keinen Hostnamen
- Erstellen zweite Seite, die an * bindet. 8092 und keinen Hostnamen
- beide Standorte Testen Sie und ziehen weiter.
- Installieren ARR und URL Rewrite-Modul.
-
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).