URL incorrecta del navegador del proxy Apache

URL incorrecta del navegador del proxy Apache

Estoy usando lo siguiente VirtualHosty mod_proxy para enviar todas las solicitudes de mi subdominio 'api' a mi servicio web Java que se encuentra en webapps/webservicemi Tomcat.

<VirtualHost *:80>
    ServerName api.mydoamin.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass /webservice http://localhost:8080
    ProxPassReverse / http://localhost:8080
</VirtualHost>

Mi problema es que si escribo 'api.midominio.com' me redirigen a 'api.midominio.com/webservice' y aparece un error 404 porque "webservicewebservice" no está disponible.

¿Alguien sabe qué hacer?

Solución: Aunque ya había probado esta solución antes, ¡Stony tenía razón! El problema en mi caso fue que, incluso si no había cambiado nada allí, tuve que reiniciar Tomcat para que funcionara. Reinicié Apache varias veces pero eso no cambió nada.

Respuesta1

No sé si entendí tu problema correctamente, pero si no lo quieres webserviceen tu URL. Luego configura tu Proxy Pass en /.

<VirtualHost *::80>
    ServerName api.mydoamin.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://localhost:8080/webservice/
    ProxPassReverse / http://localhost:8080/webservice/
</VirtualHost>

¿O desea ejecutar su servicio web bajo ese dominio? ¿Y no quieres la redirección?

Respuesta2

Después de algunas pruebas y muchos errores, finalmente se me ocurrió la siguiente solución.

Configuré mi host virtual apache así:

<VirtualHost *:80>
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny, allow
        Allow from all
    </Proxy>                                                                        
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    ServerName api.mydomain.com
</VirtualHost>

Ahora simplemente envía todas las solicitudes api.mydomain.coma mi Tomcat en el puerto 8080 sin apuntar a un directorio específico.

Luego agregué esto a /etc/tomcat7/server.xml:

<Host name="api.mydomain.com" appBase="webapps">
    <Context path="" docBase="webservice" />
</Host>

Como ProxyPreserveHostestá activado en mi host virtual Apache, Tomcat obtiene el nombre de host de la solicitud original y puede decidir por sí mismo qué contenido entregar.

El appBase="webapps"contenido parece entregarse desde el directorio raíz, incluso si está ubicado en otro lugar.

información relacionada