Pregunta

¿Es posible configurar IIS7 para lograr la misma funcionalidad que tiene Apache con respecto a los dominios comodín? Estoy interesado en enrutar al usuario en la aplicación web ASP.NET basada en el usuario del subdominio utilizado en la URL.

Algo así se describe aquí:

http://steinsoft.net/index.php?site=programming/ artículos / apachewildcarddomain

Gracias

¿Fue útil?

Solución

La respuesta es No, IIS7 (todavía) no admite nombres de host comodín (consulte esto ). Si desea servir varios dominios en un sitio web, la única solución por ahora, como se sugiere no es Andy, es usar una IP dedicada y hacerlo con DNS, que admite comodines.

Actualización 2013

Para completar, IIS8 todavía no tiene esta característica tampoco.

Actualización 2016

Finalmente, IIS 10 en Windows 2016 admite subdominios comodín.

Otros consejos

  

¿IIS admite el encabezado de host comodín? ¿Puedo capturar y redirigir   * .midominio.com a un sitio web?

La respuesta es Sí / No. Si porque eres capaz de redirigir * .midominio.com a uno sitio web No, porque la magia está en DNS y no IIS.

Así es como lo haces:
En IIS MMC, configurar un sitio web sin host encabezado, luego asigne una dirección IP a el sitio. (si tiene una dirección IP en el cuadro, entonces puedes saltarte esto). Con esto, el sitio web estará obligado a la IP específica y escuchará a todos Las solicitudes HTTP se envían a la IP y usted están hechos :)

El siguiente paso es asegurarse de que su nombre la resolución funciona para el comodín consulta y responde con la IP correcta dirección. Si usa el DNS de Microsoft servicio, no te permitirá crear un registro '*' A (suponiendo que ya creó la zona de dominio en DNS MMC), necesita hacer lo siguiente:

  1. Navegue a %windir%\system32\dns\
  2. Encuentra el archivo de zona. Por ejemplo,
    mydomain.com.dns, ábralo con el Bloc de notas
  3. Añadir una entrada. Por ejemplo,
      * A IP.IP.IP.IP
  4. Guardar el archivo de datos de zona
  5. Recargar los datos de zona en DNS MMC.

Tenga en cuenta que al hacer esto, todos * responderá a la IP que usted configurado anteriormente. P.ej. abc.mydomain.com, www.mydomain.com, K2k.mydomain.com y etc.

Para verificar que está funcionando, intente hacer ping utilidad ping (inserte cualquier cosa aquí) .midominio.com y deberías obtener respuestas de IP.IP.IP.IP

Luego intente navegar, http: // (insertar cualquier cosa aquí) .midominio.com /, usted debería obtener la misma página web que usted haber configurado.

Fuente

No puede crear un comodín (*) Un registro en el DNS de Microsoft, pero puede crear un comodín CNAME . Si todo lo que intenta hacer es dirigir todos los subdominios a una IP en particular, esto funcionaría. Por ejemplo, si tiene un registro A para www.mydomain.com , puede agregar un registro CNAME para * .mydomain.com y apunte eso en www.mydomain.com . El nombre de host en el encabezado de la solicitud seguirá siendo el subdominio, por lo que su aplicación web debería poder capturarlo y manejarlo si lo desea.

Puede usar IIS si usa el Instalador de plataforma web ( http: // www. microsoft.com/web/downloads/platform.aspx ) e instale el " URL Rewrite " módulo. Si agrega una " A " grabar como " *. example.com " ;, esto permite que todos los subdominios se envíen a su servidor IIS. En el servidor IIS, simplemente agrega una regla de reescritura de URL al sitio web predeterminado para hacer lo que desee, como redirigir a otra URL. Cuando un usuario ingresa, por ejemplo, "xyz.ejemplo.com", puede redirigir a "ejemplo.com" y señalar todos los subdominios desconocidos al dominio raíz. Los pasos son:

  1. Instalar el Instalador de plataforma web: http://www.microsoft.com/ web / downloads / platform.aspx

    Ejecútelo, busque " URL Rewrite " ;, e instálelo.

  2. Vaya al sitio web predeterminado y abra " URL Rewrite " ;.

  3. Haga clic en " Agregar regla (s) " en el extremo derecho.

  4. Nombre la regla y establezca lo siguiente:

    URL solicitada: coincide con el patrón

    Uso: expresiones regulares

    Patrón: (. *)

    Agrupación lógica: unir todos

  5. Agregue una nueva condición (haga clic en el botón " Agregar ... ") y establezca:

    Entrada de condición: {CACHE_URL}

    Compruebe si la cadena de entrada: coincide con el patrón

    Patrón (modificar según sea necesario): (http | https): // (. *?) \ .rootdomain \ .tld

    Haga clic en [Aceptar].

  6. Ahora desplácese hacia abajo a la acción y establezca:

    Tipo de acción: Redirigir

    URL de redireccionamiento (modificar según sea necesario): {C: 1}: //rootdomain.tld {R: 0}

El " {C: #} " y " {R: #} " provienen de las ventanas de prueba cuando hace clic en " Patrón de prueba " botones al lado de las entradas del patrón regex. Puede hacer coincidir parte del valor de un servidor y reutilizarlo más tarde.

Además, es posible que desee consultar este consejo al pasar HTTP / HTTPS en la URL (el " {C: 1} " en el paso 6 anterior): http://weblogs.asp.net/owscott/url-rewrite-protocol-http-https- en la acción

Actualización 2: el enlace está roto, actualice a IIS 10, ahora admite comodines.

ACTUALIZACIÓN: Esto funciona por un tiempo, después de un tiempo me bombardearon las múltiples solicitudes que llegaban. No recomendaría este método.

Asegúrese de que sus registros DNS estén configurados correctamente (registro CNAME de * - > @) y que funcionará sin problemas. Probado con múltiples dominios.

El enlace está roto ahora solía ser http://pzxc.com/apache-style-wildcard- hostname-rewrite-rules-in-iis

Para los usuarios que no pueden actualizar a IIS 10+, no es muy difícil habilitar la compatibilidad con nombres de host comodín mediante proxy inverso.

El ejemplo de HTTP es el siguiente, mientras que otra configuración es solo unos pocos pasos más.

  1. Cree un sitio general que se vincule a *: 80 y sin nombre de host.
  2. Crear el primer sitio que se une a *: 8091 y sin nombre de host.
  3. Cree un segundo sitio que se una a *: 8092 y sin nombre de host.
  4. Pruebe ambos sitios y siga adelante.
  5. Instalar el módulo ARR y URL Rewrite.
  6. Cree reglas de reescritura en el sitio general para enviar solicitudes a los dos sitios,

    <system.webServer>
        <rewrite>
            <rules>
                <rule name="site1" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="^(.*).site1.com
        <system.webServer>
            <proxy enabled="true" />
        </system.webServer>
    
    quot; /> </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<*>quot; /> </conditions> <action type="Rewrite" url="http://localhost:8092/{R:0}" /> </rule> </rules> </rewrite> </system.webServer>
  

Tenga en cuenta que a nivel del servidor, el modo proxy ARR debe estar activado,

<*>
  

El nombre de host comodín IIS 10 es más simple y también tiene un mejor rendimiento, porque ARR tiene su sobrecarga (pero en general es insignificante).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top