¿Reenviar solicitudes de Apache (puerto 80) a Tomcat (puerto 8080)?

8

Quiero ejecutar una aplicación Tomcat a través de una URL de sitio web normal, como www.xyz.com. Me gustaría que la raíz de este dominio actúe como el directorio base de la aplicación web, para que cada solicitud se www.xyz.com/a/b/cconvierta www.abc.com:8080/myApp/a/b/c. Idealmente, podría hacerlo de forma transparente y solo para ciertas aplicaciones web.

www.abc.com:8080 aún debe responder a las solicitudes.

¿Qué necesito hacer para que esto suceda?

Stefan Kendall
fuente

Respuestas:

14
ProxyPass        / http://www.abc.com:8080/myApp/
ProxyPassReverse / http://www.abc.com:8080/myApp/

Leer más sobre mod_proxy

ptman
fuente
esta es la mejor solución para hacer esto
Mike
1
Para abordar el lado "solo para ciertas aplicaciones web", simplemente profundice la ruta de redireccionamiento. Entonces: ProxyPass / a / b / c abc.com:8080/myApp/a/b/c ProxyPassReverse / a / b / c abc.com:8080/myApp/a/b/c Para proxy, excepto ciertas rutas, deje la línea ProxyPassReverse pero reemplace las líneas ProxyPass con RewriteRules (asegurándose de usar la opción [P] para proxy en lugar de redirigir) y establezca reglas anteriores para no proxy esas rutas. RewriteRule / notproxied - [L] RewriteRule /(.*) abc.com:8080/myApps/$1 [P] ProxyPassReverse / abc.com:8080/myApp
Jeremy M
¿Dónde agrego esas líneas?
Mina Michael
@MinaMichael La documentación de mod_proxy establece: Contexto: configuración del servidor, host virtual, directorio
ptman
3

Un método más simple para hacer esto es simplemente agregar una entrada de Virtual Host en su archivo de configuración de Apache. Generalmente ubicado en / etc / httpd / conf, agregue algo como esto al final de la sección Host virtual:

<VirtualHost X.X.X.X:80>
ServerName tomcatpage.yourdomain.com
ServerAlias tomcatpage.yourdomain.com
Redirect permanent / http://tomcatpage.yourdomain.com:8080/
</VirtualHost>

Reinicie su servicio Apache y ya está.


fuente
3

Puede usar mod_rewrite en Apache para hacer esto. Cargue mod_rewrite en su Apache y en su vhost www.xyz.com agregue la siguiente regla:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1

Esto debería hacer la magia.

Más información sobre mod_rewrite aquí .

EDITAR : para mantener el nombre del sitio en los navegadores, use mod_proxy también agregando una [P] al final de RewriteRule:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1 [P]

Esto obligará a Apache a actuar como un proxy para esa URL en lugar de simplemente reescribir la URL.

Marco Ramos
fuente
Esto hace que el navegador realmente redirija. Esto funciona, pero preferiría que el sitio apareciera www.xyz.comdel lado del usuario.
Stefan Kendall
1
use mod_proxy también, y al final de RewriteRule agregue una [P], así: RewriteRule ^ / (. *) abc.com:8080/myApp/$1 [P]. También he editado la respuesta anterior para incluir esta información.
Marco Ramos