Est-il possible de configurer IIS7 pour obtenir les mêmes fonctionnalités qu'Apache en ce qui concerne les domaines génériques? Je suis intéressé par le routage d'utilisateur dans l'application Web ASP.NET en fonction de l'utilisateur de sous-domaine utilisé dans l'URL.
Quelque chose comme est décrit ici:
http://steinsoft.net/index.php?site=programming/articles/apachewildcarddomain
Merci
La réponse est non, IIS7 (toujours) ne prend pas en charge les noms d’hôte génériques (voir this ). Si vous souhaitez desservir plusieurs domaines sur un même site Web, la seule solution de contournement consiste pour l’instant à utiliser une adresse IP dédiée et à le faire avec DNS, qui prend en charge les caractères génériques.
Pour être complet, IIS8 ne possède pas encore cette fonctionnalité.
Enfin, IIS 10 dans Windows 2016 prend en charge les sous-domaines génériques.
IIS prend-il en charge l’en-tête d’hôte générique? Puis-je capturer et rediriger * .Mydomain.com vers un site Web?
La réponse est oui/non. Oui, car vous êtes Capable de rediriger * .mondomaine.com vers un site Web . Non, car la magie est dans DNS et non dans IIS.
Voici comment vous le faites:
Dans IIS MMC, Configure un site Web avec en-tête NO Host , Puis attribue une adresse IP à Le site. (si vous avez une adresse IP dans la zone, vous pouvez l'ignorer.) Avec cela, le site Web sera lié à l'adresse IP spécifique et sera à l'écoute de tous. Les requêtes HTTP sont envoyées à l’IP, et vous Avez terminé :)
La prochaine étape consiste à vérifier que la résolution de votre nom Fonctionne pour la requête générique Et à répondre avec la bonne adresse IP . Si vous utilisez le service Microsoft DNS , Il ne vous permettra pas de créer Un enregistrement '*' A (en supposant que vous avez déjà créé la zone de domaine dans DNS MMC), vous devez effectuer les opérations suivantes:
%windir%\system32\dns\
* A IP.IP.IP.IP
Prenez note que ce faisant, tous les * Répondront à l’IP que vous avez configurée plus tôt. Par exemple, Abc.mydomain.com, www.mydomain.com, K2k.mydomain.com, etc.
Pour vérifier que cela fonctionne, essayez d’utiliser la commande ping ping (insert anything here).mydomain.com
Et vous devriez Obtenir des réponses de IP.IP.IP.IP
Ensuite, essayez de naviguer, http: // (insérez Quelque chose ici) .mydomain.com /, vous Devriez obtenir la même page Web que celle que vous avez configurée.
Vous ne pouvez pas créer de caractère générique (*) Un enregistrement dans le DNS de Microsoft, mais vous pouvez créer un caractère générique CNAME
. Si vous essayez uniquement de diriger tous les sous-domaines vers une adresse IP donnée, cela fonctionnerait. Par exemple, si vous avez un enregistrement A pour www.mydomain.com
, vous pouvez ajouter un enregistrement CNAME
pour *.mydomain.com
et le définir à www.mydomain.com
. Le nom d'hôte dans l'en-tête de la demande sera toujours le sous-domaine. Par conséquent, votre application Web devrait pouvoir l'attraper et la gérer si vous le souhaitez.
Vous pouvez utiliser IIS si vous utilisez Web Platform Installer ( http://www.Microsoft.com/web/downloads/platform.aspx ) et installez le module "Réécriture d'URL". Si vous ajoutez un enregistrement "A" tel que "* .example.com", tous les sous-domaines peuvent être envoyés à votre serveur IIS. Sur le serveur IIS, il vous suffit d'ajouter une règle de réécriture d'URL au site Web par défaut pour effectuer tout ce que vous souhaitez, tel que la redirection vers une autre URL. Lorsqu'un utilisateur entre par exemple "xyz.example.com", vous pouvez le rediriger vers "example.com" et faire en sorte que tous les sous-domaines inconnus soient dirigés vers le domaine racine. Les étapes sont les suivantes:
Installez Web Platform Installer: http://www.Microsoft.com/web/downloads/platform.aspx
Exécutez-le, recherchez "URL Rewrite" et installez-le.
Allez sur le site Web par défaut et ouvrez «URL Rewrite».
Cliquez sur "Ajouter une ou plusieurs règles" à l'extrême droite.
Nommez la règle et définissez les éléments suivants:
URL demandée: correspond au modèle
Utilisation de: expressions régulières
Modèle: (.*)
Regroupement logique: Match All
Ajoutez une nouvelle condition (cliquez sur le bouton "Ajouter ..") et définissez:
Entrée de condition: {CACHE_URL}
Vérifier si la chaîne d'entrée: correspond au motif
Modèle (modifiez si nécessaire): (http | https): // (. *?)\.Rootdomain\.tld
Cliquez sur OK].
Maintenant, faites défiler jusqu'à action et définissez:
Type d'action: redirection
URL de redirection (à modifier, si nécessaire): {C: 1}: //rootdomain.tld {R: 0}
Les "{C: #}" et "{R: #}" proviennent de la fenêtre de test lorsque vous cliquez sur les boutons "Modèle de test" en regard des entrées du modèle de regex. Vous pouvez faire correspondre une partie d'une valeur de serveur et la réutiliser ultérieurement.
Vous pouvez également consulter cette astuce sur la transmission du HTTP/HTTPS dans l'URL (le "{C: 1}" à l'étape 6 ci-dessus): http://weblogs.asp.net/owscott/url- rewrite-protocol-http-https-in-the-action
Pour les utilisateurs qui ne peuvent pas passer à IIS 10+, il n'est pas très difficile d'activer la prise en charge du nom d'hôte générique via un proxy inverse.
L'exemple HTTP est comme ci-dessous, alors que les autres configurations ne nécessitent que quelques étapes supplémentaires.
Créer des règles de réécriture sur le site fourre-tout pour envoyer des demandes aux deux sites,
<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>
Notez qu'au niveau du serveur, le mode proxy ARR doit être activé,
<system.webServer>
<proxy enabled="true" />
</system.webServer>
Le nom d'hôte générique IIS 10 est plus simple et offre également de meilleures performances, car ARR a un temps système (mais généralement négligeable).
Mise à jour 2: le lien est rompu, passez à IIS 10, il prend désormais en charge les caractères génériques.
MISE À JOUR: Cela fonctionne pendant un certain temps, après un certain temps, je suis devenu bombardé par plusieurs demandes qui arrivent. Je ne recommanderais pas cette méthode.
Assurez-vous que vos enregistrements DNS sont configurés correctement (enregistrement CNAME de * -> @) et cela fonctionnera parfaitement. Testé avec plusieurs domaines.
Le lien est rompu maintenant utilisé pour être http://pzxc.com/Apache-style-wildcard-hostname-rewrite-rules-in-iis