J'ai une configuration étrange. Cela ressemble à ceci:
Browser ----------> HTTPs Proxy ------> Apache HTTP -----> Tomcat AJP
HTTPS HTTP AJP
Sur le proxy HTTPS (un proxy très stupide), une URL ressemble à https: //proxy.domain.com/app. Il est ensuite tunnelé vers Apache en utilisant HTTP comme http: //apache.domain.com/app (en passant dans l'hôte proxy.domain.com). Apache tunnelise ensuite la requête localement en utilisant le protocole AJP pour ajp: // localhost: 8009 / app /.
Parfois, le serveur d'applications souhaite rediriger le chemin demandé. Par exemple, redirigez / app / vers / app / webapp. Ainsi, il renvoie un 302 à apache redirigeant le chemin - probablement quelque chose comme ajp: // localhost: 8009 / app / webapp. Apache réécrit ensuite l'URL de redirection vers http: //proxy.domain.com/app/webapp. Le proxy HTTPS est stupide, il n'analyse donc pas la redirection et ne modifie pas le http en https.
Donc, je voudrais savoir si je peux configurer Apache pour réécrire l'URL de redirection 302 pour envoyer l'utilisateur à https.
Voici la configuration que j'ai jusqu'à présent dans le https.conf d'Apache:
ProxyPreserveHost on
RewriteEngine on
RewriteRule ^/app$ /app/ [PT]
ProxyPass /app ajp://localhost:8009/app
J'ai essayé d'utiliser ProxyPassReverse , mais je n'ai pas réussi à le forcer à réécrire l'URL de redirection 302 avec https au lieu de http.
Des pensées?
la source
J'ai trouvé une autre option.
Basé sur /programming/5741210/handling-x-forwarded-proto-in-java-apache-tomcat et Apache ReverseProxyPass redirige vers http plutôt que https, il semble que certains serveurs reconnaissent l'en-tête X-Forwarded-Protocol . On peut faire reconnaître Tomcat en ajoutant:
à
server.xml
.la source
X-Forwarded-Proto
.