Eu tenho uma configuração estranha. Se parece com isso:
Browser ----------> HTTPs Proxy ------> Apache HTTP -----> Tomcat AJP
HTTPS HTTP AJP
No proxy HTTPS (um proxy muito idiota), uma URL aparece como https: //proxy.domain.com/app. Em seguida, é encapsulado no Apache usando HTTP, como é http: //apache.domain.com/app (transmitindo o host proxy.domain.com). O Apache encapsula a solicitação localmente usando o protocolo AJP para ajp: // localhost: 8009 / app /.
Às vezes, o servidor de aplicativos deseja redirecionar o caminho solicitado. Por exemplo, redirecione / app / para / app / webapp. Portanto, ele envia um 302 de volta ao apache, redirecionando o caminho - provavelmente algo como ajp: // localhost: 8009 / app / webapp. O Apache então reescreve o URL de redirecionamento para http: //proxy.domain.com/app/webapp. O proxy HTTPS é burro, por isso não analisa o redirecionamento e altera o http para https.
Portanto, gostaria de descobrir se posso configurar o Apache para reescrever a URL de redirecionamento 302 para enviar o usuário para https.
Aqui está a configuração que eu tenho até agora no https.conf do Apache:
ProxyPreserveHost on
RewriteEngine on
RewriteRule ^/app$ /app/ [PT]
ProxyPass /app ajp://localhost:8009/app
Tentei usar o ProxyPassReverse , mas não consegui descobrir como forçá-lo a reescrever o URL de redirecionamento 302 com https em vez de http.
Alguma ideia?
fonte
Eu encontrei outra opção.
Com base em /programming/5741210/handling-x-forwarded-proto-in-java-apache-tomcat e Apache ReverseProxyPass é redirecionado para http em vez de https , parece que alguns servidores reconhecem o cabeçalho X-Forwarded-Protocol . Pode-se fazer o Tomcat reconhecê-lo adicionando:
para
server.xml
.fonte
X-Forwarded-Proto
.