Redirecionamento permanente no Apache não está funcionando

1

Eu tenho um servidor Apache 2.4 no Windows 2008 que tem funcionado muito bem como um proxy reverso. Ele está servindo conteúdo de uma instalação do LifeRay 6.0 em execução no Glassfish 3.0. Originalmente, quando implementamos um redirecionamento permanente de https, não pudemos mais entrar no LifeRay, mas isso foi resolvido, eu acho, neste ponto. Assim que entramos no Liferay, a conexão é segura, mas ainda é possível alterar os https para http e a página será exibida como uma conexão http sem reverter para https. Além disso, a conexão inicial com o site pode usar http e, se o usuário não efetuar login, o site continuará a usar uma conexão http. Novamente, eu pensei que o redirecionamento permanente forçaria todo o tráfego HTTP a ser https.

O Apache está fornecendo a conexão SSL aos usuários e as diretivas proxypass se conectam ao LifeRay em uma porta insegura, o que não é um problema porque a conexão interna é virtual e não acessível pela Internet. Então, eu pensei que eu tinha a configuração pregada nisto, mas eu devo estar perdendo alguma coisa, porque eu pareço ser capaz de acessar o site com http, quando eu pensei que o redirecionamento permanente impediria isso. Deve ProxyPassReverse ser https em vez de http? Aqui está a configuração:

SERVIDOR DE TESTE
<VirtualHost *:443>
ServerName test.myexternalserver.org
 #
 ProxyPreserveHost On
 SetEnv proxy-sendchunked
 SSLEngine on
 ProxyPass / http://192.168.80.196:8080/
 ProxyPassReverse / http://192.168.80.196:8080/

 </VirtualHost>

 <VirtualHost *:80>
 ServerName test.myexternalserver.org
 ProxyPreserveHost On
 SetEnv proxy-sendchunked
 Redirect permanent / https://test.myexternalserver.org/
 ProxyPass / http://192.168.80.196:8080/
 ProxyPassReverse / http://192.168.80.196:8080/

 </VirtualHost>
    
por Pete Helgren 08.05.2013 / 17:51

1 resposta

0

Pelo que li esta manhã, os módulos são executados em uma ordem definida. (A ordem parece ser determinada pelo código do módulo em tempo de compilação.) Com base na sua pergunta aqui, parece que mod_proxy (para ProxyPass & co.) É executado antes de mod_alias (para Redirect ).

Para obter o comportamento esperado, você pode remover todas as referências ao proxy do host virtual da porta 80. Temos VHosts que se parecem muito com isso na produção, e funcionam muito bem.

<VirtualHost *:80>
  ServerName test.myexternalserver.org
  Redirect permanent / https://test.myexternalserver.org/
</VirtualHost>
    
por 09.01.2014 / 22:09