Como alterar o http para https quando os redirecionamentos do tomcat acontecem

4

Estou usando a instância única do beanstalk elástico. Portanto, há o apache configurado e o tomcat está por trás da escuta na porta http 8080. O Apache é configurado usando o ssl https 443.

O problema é que o tomcat redireciona usando http. Mas não consigo configurar o apache para alterar o http para https. Portanto, como consequência, o erro de conteúdo misto acontece impedindo que o aplicativo funcione.

Eu tentei até agora as seguintes configurações: No host virtual *: 80 eu coloquei o

<IFModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/%$1 [R, L]
</IFModule>

Também tentei

RedirectMatch ^(/.*)$ https://thepennantrace.com/$1

Ambos não funcionaram.

Eu me pergunto qual seria a maneira correta de defini-lo? (o aplicativo está sendo executado no facebook, se acessado diretamente, ele não mostrará nenhum erro)

    
por maximus 04.09.2016 / 16:35

2 respostas

1

Você pode querer resolver isso no nível do aplicativo. Você deve estar construindo um caminho completo para o novo local. Isso deve consistir em três componentes: o protocolo (https), o nome do host (do cabeçalho da solicitação) e o caminho (conforme exigido pelo aplicativo). Você pode querer uma classe de utilitário que construa links para o aplicativo para garantir a consistência.

Para links, você pode querer usar caminhos relativos. Estes serão enviados para o host de origem usando o protocolo que eles chegaram.

Redirecionar a solicitação resultante do redirecionamento ainda deixa você com conteúdo misto. Isso ocorre porque o redirecionamento inicial será http e não https.

No nível do servidor Apache, há um módulo que reescreverá os caminhos na resposta de http para https. Essa é uma maneira de corrigir links quebrados enviados por um aplicativo. No entanto, eu limitaria isso a aplicativos aos quais você não tem acesso.

    
por 04.09.2016 / 18:03
1

A diretiva que altera http no redirecionamento para https é ProxyPassReverse e a configuração relevante é:

<virtualhost *:80>
redirect   permanent  /    https://example.com
</virtualhost>

<virtualhost *:443>
ProxyPass        /app/     http://my-tomcat:8080/app/
ProxyPassReverse /app/     http://my-tomcat:8080/app/

...
## don't use ProxyPreserveHost ON as it breaks ProxyPassReverse

</virtualhost>

Sim, você pode fazer isso usando RewriteEngine , mas é complicado e, portanto, ilegível.

    
por 09.12.2016 / 15:18