Proxy inverso: plantilla de reglas

de Ruslan Yakushev

Las plantillas de reglas se usan para proporcionar una manera sencilla de crear una o varias reglas de reescritura para un escenario determinado. El módulo URL Rewrite 2 incluye varias plantillas de reglas para algunos escenarios de uso comunes. Además de la interfaz de usuario del módulo URL Rewrite, proporciona un marco para conectar plantillas de reglas personalizadas. En este tutorial se le guiará por el uso de la plantilla de reglas "Proxy inverso" que se incluye con el módulo URL Rewrite. Para más información sobre cómo configurar el proxy inverso con el módulo URL Rewrite de IIS y el enrutamiento de solicitudes de aplicación de IIS, consulte Proxy inverso con URL Rewrite v2 y Enrutamiento de solicitudes de aplicación.

Requisitos previos

Para este tutorial se necesitan los siguientes requisitos previos:

  • IIS 7 o posterior con el servicio de rol ASP.NET habilitado;
  • El módulo URL Rewrite 2.0 instalado;
  • Enrutamiento de solicitudes de aplicación de IIS instalado.

Creación del sitio web de ejemplo

Por motivos de simplicidad, el escenario de proxy inverso con el que trabajará en este tutorial se implementará en un solo servidor, con el "Sitio web predeterminado" de IIS como un sitio de proxy inverso y una aplicación de contenido hospedada en sitios web IIS independientes en el mismo servidor.

Para crear el sitio web de contenido de ejemplo:

  1. Cree una carpeta denominada "contentsite" en la carpeta siguiente:

    %SystemDrive%\inetpub\ folder.
    
  2. Cree un sitio web de IIS denominado "contentsite" que apunte a la carpeta correspondiente en %SystemDrive%\inetpub\. Use el puerto 8081 para el sitio.
    Puede usar los comandos siguientes para crear los sitios:

    %windir%\System32\inetsrv\appcmd.exe add site /name:"contentsite" /bindings:http/*:8081: /physicalPath:"%SystemDrive%\inetpub\contentsite
    
  3. Cree un archivo denominado default.aspx en la carpeta siguiente:

    %SystemDrive%\inetpub\contentsite
    
  4. Copie el siguiente marcado de ASP.NET, péguelo en el archivo y guarde el archivo como default.aspx:

    <%@ Page Language="C#" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Reverse Proxy Test Application</title>
    </head>
    <body>
        <h1>Reverse Proxy Test Page</h1>
        <p>Requested URL path is <%= Request.ServerVariables["SCRIPT_NAME"] %></p>
        <p><a href="http://<%= Request.ServerVariables["HTTP_HOST"] + Request.ServerVariables["SCRIPT_NAME"] %>">Here</a> is the link to this page.</p>
    </body>
    </html>
    
  5. Para asegurarse de que el sitio funciona correctamente, abra un navegador web y solicite las siguientes direcciones URL:

    http://localhost:8081/default.aspx
    

Generación de reglas de entrada y salida mediante la plantilla de proxy inverso

La plantilla de reglas "Proxy inverso" se puede usar para generar una regla de reescritura de entrada que se usa como proxy de las solicitudes HTTP a otro servidor. Opcionalmente, la plantilla también puede crear una regla de reescritura de salida que pueda corregir los nombres de host en las direcciones URL de vínculos dentro de las respuestas HTML. En el caso de ejemplo descrito en este tutorial, el nombre de host del servidor proxy es localhost y el nombre de host del servidor de contenido es localhost:8081. La aplicación web del servidor de contenido genera un vínculo en la respuesta HTML que usa un nombre de host interno, por ejemplo, http://localhost:8081/default.aspx. La regla de salida corrige este vínculo para usar el nombre de host del proxy, por ejemplo, http://localhost/default.aspx.

Para crear las reglas mediante la plantilla de reglas, siga estos pasos:

  1. En el Administrador de IIS, seleccione el "Sitio web predeterminado" en la vista de árbol del lado izquierdo.
  2. Abra la vista de características de URL Rewrite.
  3. En la vista de características de URL Rewrite, seleccione la acción "Agregar reglas..." y después la plantilla "Proxy inverso":
    Screenshot of the Add Rules dialog box displaying the rule template options. Reverse Proxy is highlighted.
  4. En el cuadro de diálogo "Agregar reglas de proxy inverso", escriba lo siguiente:
    Nombre del servidor o dirección IP donde se reenviarán las solicitudes HTTP: localhost:8081
    Active la casilla "Reescribir los nombres de dominio de los vínculos en respuestas HTTP" y escriba lo siguiente:
    Desde: localhost:8081
    A: localhost
    Screenshot of the Add Reverse Proxy Rules dialog box.
  5. Haga clic en OK. Se crearán las reglas de entrada y salida:
    Screenshot of the I I S Manager displaying the U R L Rewrite page.

Prueba del proxy inverso

Para probar que las reglas de reescritura generadas por la plantilla de reglas funcionan correctamente, abra un explorador web y realice una solicitud a http://localhost/default.aspx. "Sitio web predeterminado" de IIS recibirá esta solicitud y la enrutará a http://localhost:8081/default.aspx de acuerdo con la regla de reescritura de entrada. Cuando se devuelva la respuesta HTTP desde el sitio web contentsite, la regla de reescritura de salida modifica la dirección URL del vínculo dentro del código HTML para volver a escribir el nombre de host de localhost:8081 a localhost:

Screenshot of a browser window displaying a Reverse Proxy Test Page.

Resumen

En este tutorial ha aprendido a usar la plantilla de regla "Proxy inverso" a fin de generar reglas de reescritura para implementar una configuración sencilla de proxy inverso en IIS. Esta plantilla de reglas se puede usar como punto de partida para generar las reglas base que se pueden ajustar o modificar posteriormente para abordar los requisitos de enrutamiento y reescritura específicos que tiene para la aplicación web.