ARR Routing (dedicado a jquilez y el que se apunte)

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • jmtella
    respondió
    Originalmente publicado por jquilezl Ver Mensaje
    Tengo los cuatro servers montados, uno que hace de frontend con el ARR instalado. Los otros tres con IIS. En uno de éstos he instalado php, pero me queda completar la configuración.
    Llevo media tarde liado con el ARR. Los documentos que hay por Internet no son muy explicativos que digamos. He creado reglas de url rewrite, configurándoles condiciones de tipo {HTTP_HOST} con patrón coindidente con la url pública que quiero redirigir (p.e. http://www.gericom.es*) y acción Redirigir a "http://srvinternal01.servers.es", y así para los tres, pero no me funciona (la url interna es alcanzable si la tecleo directamente). También he probado en lugar de esto a crear tres granjas de un servidor (el srvinternalxx correspondiente) y en lugar de redirigir, decirle que la acción de cada regla es enrutar a la granja correspondiente.
    Ahora no puedo seguir; me parece que mañana borraré toda la configuración del server frontend y volveré a empezar. Alguna pistilla se agradecería, pues seguro que me estoy dejando algo que luego será evidente.
    Por si te sirve de pista te dejo el web.config generado (es imprescindible definir las variables en el server HTTP_X_ORIGINAL_ACCEPT_ENCODING y la HTTP_ACCEPT_ENCODING o dará un error por compresión de encabezados y poner por tanto las reglas que ves en preconditions en la parte inferior.

    Spoiler: mostrar

    Código:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <rewrite>
                <rules>
                    <rule name="ReverseProxyInboundRule4" stopProcessing="true">
                        <match url="(.*)" />
                        <action type="Rewrite" url="http://192.168.4.162/{R:1}" />
                        <conditions>
                            <add input="{HTTP_HOST}" pattern="rkey.es" />
                        </conditions>
                        <serverVariables>
                            <set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
                            <set name="HTTP_ACCEPT_ENCODING" value="" />
                        </serverVariables>
                    </rule>
                    <rule name="ReverseProxyInboundRule3f" stopProcessing="true">
                        <match url="(.*)" />
                        <action type="Rewrite" url="https://jmtella.com/foro/{R:1}" />
                        <conditions>
                            <add input="{HTTP_HOST}" pattern="foro.jmtella.com" />
                        </conditions>
                        <serverVariables>
                            <set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
                            <set name="HTTP_ACCEPT_ENCODING" value="" />
                        </serverVariables>
                    </rule>
                    <rule name="ReverseProxyInboundRule3fs" stopProcessing="true">
                        <match url="(.*)" />
                        <action type="Rewrite" url="https://jmtella.com/foro/{R:1}" />
                        <conditions>
                            <add input="{HTTP_HOST}" pattern="foros.jmtella.com" />
                        </conditions>
                        <serverVariables>
                            <set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
                            <set name="HTTP_ACCEPT_ENCODING" value="" />
                        </serverVariables>
                    </rule>
                    <rule name="ReverseProxyInboundRule3fsn" stopProcessing="true">
                        <match url="(.*)" />
                        <action type="Rewrite" url="https://jmtella.com/foro/{R:1}" />
                        <conditions>
                            <add input="{HTTP_HOST}" pattern="wnews.jmtella.com" />
                        </conditions>
                        <serverVariables>
                            <set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
                            <set name="HTTP_ACCEPT_ENCODING" value="" />
                        </serverVariables>
                    </rule>
                    <rule name="ReverseProxyInboundRule3" stopProcessing="true">
                        <match url="(.*)" />
                        <action type="Rewrite" url="http://192.168.4.158/{R:1}" />
                        <conditions>
                            <add input="{HTTP_HOST}" pattern="foros.jmtella.es" />
                        </conditions>
                        <serverVariables>
                            <set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
                            <set name="HTTP_ACCEPT_ENCODING" value="" />
                        </serverVariables>
                    </rule>
                    <rule name="ReverseProxyInboundRule2" stopProcessing="true">
                        <match url="(foro.*|oficina.*)" />
                        <action type="Rewrite" url="http://192.168.4.57/{R:1}" />
                        <conditions>
                            <add input="{CACHE_URL}" pattern="^(https?)://" />
                        </conditions>
                        <serverVariables>
                            <set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
                            <set name="HTTP_ACCEPT_ENCODING" value="" />
                        </serverVariables>
                    </rule>
                    <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                        <match url="(.*)" />
                        <action type="Rewrite" url="http://192.168.4.138/{R:1}" />
                        <conditions>
                            <add input="{CACHE_URL}" pattern="^(https?)://" />
                        </conditions>
                        <serverVariables>
                            <set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
                            <set name="HTTP_ACCEPT_ENCODING" value="" />
                        </serverVariables>
                    </rule>
                </rules>
                  <outboundRules>
                    <rule name="ReverseProxyOutboundRule4" preCondition="ResponseIsHtml1">
                        <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://192.168.4.162/(.*)" />
                        <action type="Rewrite" value="http{R:1}://rkey.es/{R:2}" />
                    </rule>
                    <rule name="ReverseProxyOutboundRule3" preCondition="ResponseIsHtml1">
                        <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://192.168.4.158/(.*)" />
                        <action type="Rewrite" value="http{R:1}://foros.jmtella.es/{R:2}" />
                    </rule>
                    <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
                        <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://192.168.4.138/(.*)" />
                        <action type="Rewrite" value="http{R:1}://jmtella.com/{R:2}" />
                    </rule>
                      <rule name="ReverseProxyOutboundRule2" preCondition="ResponseIsHtml1">
                        <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://192.168.4.57/(.*)" />
                        <action type="Rewrite" value="http{R:1}://jmtella.com/{R:2}" />
                    </rule>
                      <rule name="RestoreAcceptEncoding" preCondition="NeedsRestoringAcceptEncoding">
                        <match serverVariable="HTTP_ACCEPT_ENCODING" pattern="^(.*)" />
                        <action type="Rewrite" value="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" />
                    </rule>
                      <preConditions>
                        <preCondition name="ResponseIsHtml1">
                            <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                        </preCondition>
                        <preCondition name="NeedsRestoringAcceptEncoding">
                            <add input="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" pattern=".+" />
                        </preCondition>
                    </preConditions>
                </outboundRules>
            </rewrite>
            <httpErrors>
                <remove statusCode="404" subStatusCode="-1" />
                <error statusCode="404" prefixLanguageFilePath="" path="https://jmtella.com/jmt" responseMode="Redirect" />
            </httpErrors>
        </system.webServer>
    </configuration>

    Dejar un comentario:


  • jquilezl
    respondió
    Tengo los cuatro servers montados, uno que hace de frontend con el ARR instalado. Los otros tres con IIS. En uno de éstos he instalado php, pero me queda completar la configuración.
    Llevo media tarde liado con el ARR. Los documentos que hay por Internet no son muy explicativos que digamos. He creado reglas de url rewrite, configurándoles condiciones de tipo {HTTP_HOST} con patrón coindidente con la url pública que quiero redirigir (p.e. http://www.gericom.es*) y acción Redirigir a "http://srvinternal01.servers.es", y así para los tres, pero no me funciona (la url interna es alcanzable si la tecleo directamente). También he probado en lugar de esto a crear tres granjas de un servidor (el srvinternalxx correspondiente) y en lugar de redirigir, decirle que la acción de cada regla es enrutar a la granja correspondiente.
    Ahora no puedo seguir; me parece que mañana borraré toda la configuración del server frontend y volveré a empezar. Alguna pistilla se agradecería, pues seguro que me estoy dejando algo que luego será evidente.

    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por jmtella Ver Mensaje



    O bien instalándolo desde el Web Platform Installer..
    ¿Cómo vas?...

    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por jquilezl Ver Mensaje
    Joer, llevo media mañana peleándome con la instalación del php en una de las máquinas y todavía no lo he logrado hacer funcionar.


    O bien instalándolo desde el Web Platform Installer..

    Dejar un comentario:


  • jquilezl
    respondió
    Joer, llevo media mañana peleándome con la instalación del php en una de las máquinas y todavía no lo he logrado hacer funcionar.

    Dejar un comentario:


  • jquilezl
    respondió
    Ahora tengo que dejarlo. Ya he instalado el ARR y tengo las tres máquinas adicionales con IIS. Mañana seguiré y les instalaré php y a ver.

    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por jquilezl Ver Mensaje
    Instalando el ARR
    Pues vete echándole una mirada (lo que hace entre cosas es generar un web.config)

    Dejar un comentario:


  • jquilezl
    respondió
    Instalando el ARR

    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por jmtella Ver Mensaje

    Venga, una para el routing que es la que recibirá todas las peticiones. Instala en él, el ARR Routing 3.0 con el Web Platform Installler. Buscar ARR -Application Request Routing- y te viene el 2.5 y el 3.0, monta este ultimo.
    Y en las otras monta PHP (con FASTCgi en el IIS)... y créate alguna pagina (y site) para probar.., pero que sea en PHP...que es el mas puñetero...

    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por jquilezl Ver Mensaje
    Estoy instalando las cuatro máquinas virtuales.
    Venga, una para el routing que es la que recibirá todas las peticiones. Instala en él, el ARR Routing 3.0 con el Web Platform Installler. Buscar ARR -Application Request Routing- y te viene el 2.5 y el 3.0, monta este ultimo.

    Dejar un comentario:


  • jquilezl
    respondió
    Estoy instalando las cuatro máquinas virtuales.

    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por jquilezl Ver Mensaje
    Vale, realmente no es redirección, sino enrutamiento web
    http://www.iis.net/downloads/microso...equest-routing
    Si..pero hay que solventar todos los problemas...que no son pocos...no.. No es tan fácil como instalar y a funcionar. Prueba...

    (y Google está lleno de mentiras...)

    Dejar un comentario:


  • jquilezl
    respondió
    Vale, realmente no es redirección, sino enrutamiento web

    Dejar un comentario:


  • jquilezl
    respondió
    Ya para mañana las otras tres, que hoy tengo sarao. Había usado alguna vez la redirección simple, con un response.redirect en el fichero hrm por defecto, pero para lo que quieres no vale, ni tampoco usando la redirección de los nuevos IIS (que no deja de ser lo mismo). Entiendo que la gracia está en que en la barra de direcciones del navegador no cambie la url base, pues al ser servidores internos los que realmente responden, el cliente no podría resolverlos una vez redirigido. El encabezado de host sí lo tengo claro y funciona perfectamente para separar las url de acceso externo a diferentes sitios web del server web, usando éstos la misma ip y puerto. A ver lo de la redirección cómo lo resuelvo.

    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por jquilezl Ver Mensaje
    Lo acabo de probar configurando la redirección de www.gericom.es a jmtella.com, y si entonces abro en IE "http://www.gericom.es/foro" me redirige y abre "https://jmtella.com/foro", pero claro, cambiando la url, con lo que desde el exterior no accedería a la interna. Hay que currárselo más, evidentemente.
    Móntate 4 virtuales...y lo hacemos...

    Dejar un comentario:

Trabajando...
X