Tengo una configuración extraña. Se parece a esto:
Browser ----------> HTTPs Proxy ------> Apache HTTP -----> Tomcat AJP
HTTPS HTTP AJP
En el proxy HTTPS (un proxy muy tonto), una URL aparece como https: //proxy.domain.com/app. Luego se canaliza a Apache usando HTTP como es http: //apache.domain.com/app (pasando el host proxy.domain.com). Apache luego hace un túnel localmente la solicitud utilizando el protocolo AJP para ajp: // localhost: 8009 / app /.
A veces, el servidor de aplicaciones quiere redirigir la ruta solicitada. Por ejemplo, redirect / app / to / app / webapp. Entonces, envía un 302 de vuelta a Apache redirigiendo la ruta, probablemente algo así como ajp: // localhost: 8009 / app / webapp. Apache luego reescribe la URL de redireccionamiento a http: //proxy.domain.com/app/webapp. El proxy HTTPS es tonto, por lo que no analiza la redirección y cambia el http a https.
Entonces, me gustaría averiguar si puedo configurar Apache para reescribir la URL de redireccionamiento 302 para enviar al usuario a https.
Aquí está la configuración que tengo hasta ahora en https.conf de Apache:
ProxyPreserveHost on
RewriteEngine on
RewriteRule ^/app$ /app/ [PT]
ProxyPass /app ajp://localhost:8009/app
Intenté usar ProxyPassReverse , pero no he podido descubrir cómo forzarlo a reescribir la URL de redireccionamiento 302 con https en lugar de http.
¿Alguna idea?
fuente
He encontrado otra opción.
Basado en /programming/5741210/handling-x-forwards-proto-in-java-apache-tomcat y Apache ReverseProxyPass redirige a http en lugar de https , parece que algunos servidores reconocen el encabezado X-Fordered-Protocol . Uno puede hacer que Tomcat lo reconozca agregando:
a
server.xml
.fuente
X-Forwarded-Proto
.