1 votos

Apache mod_proxy equilibrador de config problema con la solicitud POST

Estoy tratando de configurar un equilibrador de Carga con Apache mod_proxy y Tomcat. Tengo los siguientes módulos disponibles (mod_proxy, mod_proxy_balancer, mod_proxy_http) Tengo 2 instancias de Tomcat, y el plan para dirigir la solicitud a uno de los servidor Tomcat.

Mi aplicación en Tomcat está funcionando bien cuando puedo acceder directamente. www.mydomain:8080/myapp www.mydomain:9080/myapp

Mi Tomcat server.xml tiene las siguientes Tomcat 1 Nombre del motor="Catalina" defaultHost="localhost" jvmRoute="tomcat1"

Tomcat 2 Nombre del motor="Catalina" defaultHost="localhost" jvmRoute="tomcat2"

Aquí es lo que tengo en mi virtualhost.conf

<IfModule proxy_module>
        ProxyRequests on
        ProxyPreserveHost Off
        ProxyPass / balancer://mycluster/ stickysession=JSESSIONID
        ProxyPassReverse / balancer://mycluster/ stickysession=JSESSIONID
    ProxyPassReverseCookiePath /myapp /

        <Proxy balancer://mycluster >
                BalancerMember http://localhost:8080/myapp route=tomcat1
                BalancerMember http://localhost:9080/myapp route=tomcat2

                Require all granted
                ProxySet lbmethod=byrequests
        </Proxy>

    <Location /balancer>
        SetHandler balancer
        Require host www.mydomain.com
    </Location>
</IfModule>

Con la configuración de arriba soy capaz de acceder al sitio de la primera página. Cuando accedo a www.mydomain.com, se carga la página de inicio de sesión(www.mydomain.com/login.do) Cuando hago clic en otros enlaces es la apertura de las páginas correctas. Por ejemplo: www.mydomain.com/password-reset.do El basic conmutar también funciona. Si me paro uno Instancias de Tomcat, que sirve a la página desde el servidor y viceversa.

Pero cuando trato de enviar cualquier petición POST como tratar de iniciar Sesión, el cambio de url para www.mydomain/myapp/login.do y siempre muestra la página de inicio de sesión.

No estoy seguro si el de arriba conf entradas son totalmente correcta con respecto a lo que yo quiero. Puede que algunos uno de los puntos de mí lo que está mal. También por favor, hágamelo saber si me falta algo aquí con respecto a los sucurity. También me gustaría tener los archivos de imagen y otros archivos servidos directamente desde el servidor Web. Por favor, hágamelo saber cómo puedo hacer eso.

Gracias

0voto

kubanczyk Puntos 4395

Hay dos casos cuando esto sucede generalmente. Ello no implica el equilibrador de todo acontece de la misma con un solo servidor.

  1. Un lugar en el código HTML de la aplicación puede contener un literal de cadena de dirección URL absoluta como http://example.com/myapp/post_here así que el POST va allí (que de hecho hits backend con http://127.0.0.1:xxxx/myapp/myapp/post_here). Hay una amplia gama de soluciones para esto.

  2. Otra posibilidad. El POST por lo general resulta en una redirección (302). El backend puede redirigir a una URL absoluta http://example.com/myapp/post_here lo que no ser apresado. Su ProxyPassReverse en la actualidad sólo las capturas http://127.0.0.1:xxxx/myapp/post_here. Usted puede agregar ProxyPassReverse / http://example.com/myapp más bajo que el suyo como una adicional, es permitido.

Ambos casos son fáciles de observar si usted configura su navegador para registro de solicitudes de red/respuestas (desarrollador opción tanto en Firefox y Chrome).

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: