Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Esta sección de la documentación se aplica a la versión 2.0 del módulo de reescritura url para IIS 7.
Este tutorial le guía a través de cómo usar url Rewrite Module v 2.0 para establecer encabezados de respuesta HTTP.
Prerrequisitos
Este tutorial requiere los siguientes requisitos previos:
- IIS 7 o posterior con ASP.NET servicio de rol habilitado;
- URL Rewrite Module 2.0 Release Candidate instalado;
- Tutorial completado en Proxy inverso con URL Rewrite v2 y Enrutamiento de Solicitudes de Aplicaciones.
Introducción
Url Rewrite Module 2.0 proporciona compatibilidad con la reescritura basada en reglas de los encabezados HTTP de respuesta. Un escenario de uso muy común para configurar los encabezados de respuesta es modificar la respuesta de redirección generada por una aplicación detrás de un balanceador de carga o un proxy inverso. Por ejemplo, cuando una aplicación detrás de un proxy inverso devuelve una respuesta de redirección, es posible que el encabezado Ubicación HTTP de la respuesta no represente la dirección accesible desde Internet, sino una dirección de aplicación interna. El módulo 2.0 de reescritura URL se puede usar en el servidor proxy inverso para modificar la cabecera Location en la respuesta. El escenario se representa en el diagrama siguiente:
- Un cliente HTTP realiza una solicitud a una página
http://www.contoso.com/webmail/oldpage.aspxweb . - El servidor proxy inverso usa url Rewrite 2.0 y Application Request Routing para reenviar la solicitud a un servidor de contenido interno en función del nombre de la carpeta en la ruta de acceso de dirección URL solicitada. Por ejemplo,
http://webmail/oldpage.aspx; - La aplicación web que se ejecuta en el servidor de contenido emite una respuesta de redirección (HTTP/1.1 301) que apunta a un cliente HTTP a
http://webmail/newpage.aspx; - El servidor proxy inverso usa url Rewrite 2.0 para reemplazar la ubicación de redirección basada en interna en la respuesta por la ubicación de redirección basada en Internet:
http://www.contoso.com/webmail/newpage.aspx.
Configuración de un escenario de tutorial
Para configurar el escenario de tutorial, complete el tutorial sobre proxy inverso con url Rewrite v2 y enrutamiento de solicitudes de aplicación. Al final de ese tutorial, debe tener un sitio web de proxy inverso que enruta las solicitudes a dos aplicaciones de contenido: correo web y nómina.
Para este tutorial, deberá agregar una lógica de redirección a la aplicación de correo web. En el escenario real, probablemente sería un redireccionamiento iniciado por el código de la aplicación web, pero, por motivos de simplicidad, en este tutorial usará una regla de redireccionamiento en el módulo de reescritura de direcciones URL.
Cree un archivo denominado web.config en la carpeta siguiente:
%SystemDrive%\inetpub\webmailAbra el archivo en un editor de texto, pegue el código XML siguiente dentro y guarde el archivo:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Redirect" stopProcessing="true"> <match url="^index\.aspx$" /> <action type="Redirect" url="default.aspx" /> </rule> </rules> </rewrite> </system.webServer> </configuration>Se trata de una regla que redirigirá todas las solicitudes de index.aspx a default.aspx.
Ahora abra un explorador web y realice una solicitud http://localhost/webmail/index.aspx. Observe que el explorador se ha redirigido a http://localhost:8081/default.aspx, que es básicamente una dirección URL interna que usa la aplicación web de correo web. Ahora configurará las reglas de reescritura de direcciones URL para modificar el encabezado ubicación HTTP en las respuestas de redirección HTTP para que el explorador se redirija a una dirección URL adecuada: http://localhost/webmail/default.aspx.
Modificación de la regla de entrada para conservar el encabezado de host
Para poder modificar el encabezado de ubicación HTTP, es necesario conservar el valor original del encabezado de host HTTP. La regla de reescritura de salida usa el valor conservado al modificar la respuesta. Para conservar el valor original, almacénelo en una variable de servidor temporal ORIGINAL_HOST.
- En la vista de la característica principal URL Rewrite, seleccione Ver variables de servidor en el panel Acciones del lado derecho:
- En la página Variables de servidor permitidas , seleccione Agregar y escriba el nombre de la variable de servidor que se usará para almacenar temporalmente el valor del encabezado host HTTP. Por ejemplo, ORIGINAL_HOST:
- Seleccione Aceptar para guardar los cambios y, a continuación, vuelva a la página principal de la vista de características reescritura de la dirección URL. Después, seleccione la regla de entrada "Proxy inverso a correo web" y seleccione Editar.
- En la página Editar regla de entrada, expanda el grupo de casillas "Variables de servidor"; luego, seleccione Agregar y escriba "ORIGINAL_HOST" para el nombre de la variable de servidor y "{HTTP_HOST}" para "Valor":
Creación de una regla de salida para modificar el encabezado de respuesta HTTP
Ahora vas a crear una regla de reescritura de salida que reescriba el encabezado 'Location' HTTP en las respuestas de redirección para agregar nuevamente la carpeta de la aplicación a la ruta de acceso de la dirección URL y sustituir el nombre de host.
- En la página principal de la vista de características de reescritura de direcciones URL, seleccione "Agregar reglas" y, a continuación, seleccione "Regla en blanco" en la categoría "Reglas de salida".
- En la página "Editar regla de salida", asigne un nombre a la regla como "Reescritura del encabezado de ubicación".
- En la lista desplegable "Condición previa", elija "<Crear nueva condición> previa".
- En el cuadro de diálogo "Agregar condición previa", asigne el nombre "IsRedirection" a la condición previa.
- Seleccione "Agregar" y escriba {RESPONSE_STATUS} como entrada de condición y "3\d\d" como patrón. Esta condición previa se usa para comprobar si la respuesta tiene un código de estado de redireccionamiento, como 301, 302, 307, etc. El cuadro de diálogo anterior a la condición debe ser similar al siguiente:
- Seleccione Aceptar para volver a la página Editar regla de salida .
- En el cuadro Grupo de coincidencias , use la lista desplegable Ámbito de coincidencia para seleccionar Variable de servidor.
- Escriba RESPONSE_Location para "Nombre de variable" y "^http://[^/]+/(.*)" para "Pattern". Esto configura la regla para que opere sobre el encabezado HTTP de respuesta "Location" y coincida su valor con un patrón regex que almacene la ruta del URL en una referencia inversa.
- Expanda el cuadro de grupo "Condiciones", seleccione "Agregar" y escriba {ORIGINAL_HOST} como entrada de condición y ".+" como patrón de condición. Esta condición comprueba si la variable de servidor temporal ORIGINAL_HOST existe y tiene un valor no vacío.
- Seleccione Agregar una vez más y agregue otra condición. Establezca la entrada de condición en {URL} y el patrón en "^/(webmail|payroll)/.*". Esta expresión regular se usa para coincidir con las rutas URL que comienzan con /webmail o /payroll. Además, el paréntesis dentro del patrón captura la parte de la cadena de dirección URL coincidente, de modo que se pueda reutilizar al construir la dirección URL de reemplazo.
- Por último, en el cuadro de grupo "Acción", elija la acción "Reescritura" y escriba "
http://{ORIGINAL_HOST}/{C:1}/{R:1}" como un valor. Esta acción reemplaza el valor del encabezado de ubicación HTTP por una cadena construida mediante el nombre de host de la variable de servidor, la referencia de condición inversa que contiene el prefijo de carpeta de la ruta de acceso URL y la referencia de retroceso de regla que contiene la ruta de acceso URL actual en el encabezado de ubicación.
La página completa debe ser similar a la siguiente:
Prueba de la regla
Para probar que las reglas funcionan correctamente, abra un explorador web y realice una solicitud a http://localhost/webmail/index.aspx. El explorador debe redirigirse a http://localhost/webmail/default.aspx:
Resumen
En este tutorial:
- Ha aprendido a usar varias características nuevas en URL Rewrite 2.0 para implementar un escenario de proxy inverso totalmente funcional.
- Ha configurado la regla de entrada para reenviar las solicitudes a un servidor de contenido back-end y establecer una variable de servidor temporal.
- A continuación, ha definido una regla de salida que modifica el encabezado HTTP de ubicación en la respuesta de redireccionamiento generada por la aplicación web desde el servidor de contenido de fondo.