2009-09-08 12 views
13

estoy usando Tomcat 5.5.9 y Apache 2.xCómo utilizar un nombre de ruta diferente en ProxyPass que el nombre del contexto de Tomcat

Estamos tratando de utilizar un nombre de ruta en ProxyPass que es diferente que el Tomcat nombre de contexto.

ProxyPass /path http://localhost:8080/contextname 

Sin embargo, esto no funciona. Cuando estos dos son los mismos , todo funciona bien.

La mayoría de los ejemplos que veo en la red también tienen la ruta igual a el nombre del contexto de Tomcat.

Estoy usando "context.xml" dentro del contexto de Tomcat y do not NO tengo entradas "server.xml". Además, estoy usando plain httd.conf y NO uso ninguna entrada VirtualHost.

Cualquier ayuda es apreciada.

Saludos,

Diptenu

Respuesta

10

creo que se necesita tanto

ProxyPass /path/ http://localhost:8080/contextname/ 
ProxyPassReverse /path/ http://localhost:8080/contextname/ 

algún motivo no utilizar mod_jk?

+0

Hola David, Tenía los comandos ProxyPass y ProxyPassReverse aunque no lo mencioné en mi mensaje. En cuanto a por qué no usar mod_jk simplemente necesito ocultar el puerto tomcat de la URL de acceso de usuario y nada más para que mod-proxy parezca el más simple –

+1

Se corrigió la solución: probablemente tengas las barras al final del URI. Esto se copia de mis archivos de conf. –

3
RewriteEngine on 
RewriteRule ^/path$ /path/ [R] 
RewriteRule ^/path/(.*) /contextname/$1 [P] 

ProxyPass /contextname/ protocol://192.168.15.48:8080/contextname/ 
ProxyPassReverse /contextname/ protocol://192.168.15.48:8080/contextname/ 

Donde "protocolo" = "http" en este caso ...

2

Añadir una barra de ambos valores:

ProxyPass /path/ http://localhost:8080/contextname/

+0

¿Podría explicarnos cómo difiere esto de la versión sin entrenamiento de barra? –

+0

no resuelve el problema. –

1

Su problema son las URL probablemente auto-referencial que la aplicación produce No hay mucho que pueda hacer al respecto, salvo para

  1. cambiar la aplicación o
  2. reescritura de todo lo que se escupe.

La opción 2 puede ser muy frágil. Ver the tomcat docs para obtener más información.

+0

Esto es bueno y claro –

-2

Supongamos que su dominio es bla.com y desea enviar un proxy bla.com/path a 8080/contextname.

Si utiliza la siguiente continuación, en última instancia, obtener una redirección a contextName

ProxyPass /path http://localhost:8080/contextname 
ProxyPassReverse /path http://localhost:8080/contextname 

Resultado: bla.com/contextname (redirigida en los registros de Apache)

Con el fin de obtener su resultado deseado se debe incluir una barra tras el nombre del contexto.

ProxyPass /path http://localhost:8080/contextname/ 
ProxyPassReverse /path http://localhost:8080/contextname/ 

Resultado: bla.com/path

Un poco tarde, pero aquí es donde Google te lleva.

+0

lo probé pero no funciona. – Jakki

Cuestiones relacionadas