8 votos

Cómo configurar mod_proxy para ProxyPass basado en http vs https?

Tengo Apache Tomcat corriendo con SSL habilitado. Tengo Apache HTTP Server actúa como un proxy inverso para mi si los usuarios de golpe http://myserver/tomcat/ se pasan a http://myserver:8080.

ProxyPass /tomcat/ http://myserver:8080/
ProxyPassReverse /tomcat/ http://myserver:8080/

Tengo Apache HTTP server configurado para SSL, de modo que cuando los usuarios golpe https://myserver/tomcat/ que se debe pasar a https://myserver:8443/.

Con la actual ProxyPass & ProxyPassReverse la configuración que va a ser redirigido a la no-dirección URL de ssl. ¿Cómo puedo configurar el proxy de pasar para que se redirige a los distintos puerto y protocolo basado en la petición de entrada?

Es decir, si alguien viene a través de HTTPS ¿cómo puedo redirigir a mi tomcat @ https://myserver:8443?


Actualización:

@mike-insch

He intentado:

NameVirtualHost *:443

<VirtualHost *:80>
    ProxyPass /tomcat/ http://myserver:8080/
    ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>

<VirtualHost *:443>
    ProxyPass /tomcat/ https://myserver:8443/
    ProxyPassReverse /tomcat/ https://myserver:8443/
</VirtualHost>

Ahora, cuando me visita: https://myserver/tomcat/ me sale "página no encontrada". En el registro de errores que veo "el Archivo no existe: /var/apache2/htdocs/tomcat"

Lo cual es correcto, pero yo esperaba que la solicitud se enruta a tomcat corriendo a https://myserver:8443/.

Supongo que tengo que mirar más a los hosts virtuales, a menos que algo se ve manifiestamente incorrecto.

5voto

David Carboni Puntos 131

Para la integridad: si es una opción, es una buena idea para terminar SSL en Apache, en lugar de tener Tomcat manejarlo así. Proporcionar Tomcat sólo es accesible desde Apache es más sencillo, y no menos seguro.

En esta configuración, Apache sería proxy HTTP y HTTPS a http://myserver:8080/:

NameVirtualHost *:443

<VirtualHost *:80>
    ProxyPass /tomcat/ http://myserver:8080/
    ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>

<VirtualHost *:443>
    ProxyPass /tomcat/ http://myserver:8080/
    ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>

4voto

Mike Insch Puntos 1136

Usted necesita hacer esto a través de dos independientes <VirtualHost *:X> directivas. Su HTTP directivas ir dentro de <VirtualHost *:80> , mientras que su HTTPS directivas ir dentro de <VirtualHost *:443>. Ajustar según sea necesario si el servidor tiene varias Direcciones o Basado en hosts virtuales Basados en Nombre configurado. Ver el Apache 2 documentación para más detalles.

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: