Apache (http) por trás do balanceador de carga (http / https) - O redirecionamento não preserva o https

1

Eu tenho duas configurações - desenvolvimento e temporariedade - com (supostamente) configurações idênticas: um conjunto de instâncias Apache HTTP-only sentadas atrás de um balanceador de carga Citrix que permite conexões HTTP e HTTPS.

As definições do Apache VirtualHost contêm as seguintes diretivas:

RedirectMatch permanent /something/endpoint(.*)$ /something/otherendpoint$1
SSLProxyEngine On
ProxyPass /something/endpoint !
ProxyPass /something https://192.168.1.100:6443/something
<Location /something>
ProxyPassReverse https://192.168.1.100:6443/something
</Location>

Portanto, desejo fazer proxy de todas as solicitações de /something para um servidor HTTPS de back-end diferente, exceto para /something/endpoint , que preciso redirecionar.

Agora, tudo está funcionando bem no meu ambiente de desenvolvimento. Eu posso acessar http://hostname/something/endpoint e ele me redirecionará para http://hostname/something/otherendpoint . Da mesma forma, posso acessar https://hostname/something/endpoint e ele me redirecionará para https://hostname/something/otherendpoint .

Mas no ambiente de preparação, tanto http://hostname/something/endpoint como https://hostname/something/endpoint redirecionam para http://hostname/something/otherendpoint - não preservam HTTPS.

Eu tenho puxado meu cabelo tentando descobrir qual é a diferença entre as duas configurações. Deve haver algo causando o Apache a não respeitar o protocolo de acesso, mas não consigo isolá-lo. Os cabeçalhos de resposta HTTP parecem os mesmos em ambos os ambientes, exceto pelo cabeçalho Location de redirecionamento que especifica http em vez de https .

Alguma idéia sobre qual diferença de configuração pode estar causando isso?

    
por greenlaw 07.02.2017 / 21:30

1 resposta

0

Lembre-se de que os redirecionamentos permanentes são armazenados em cache pelo seu navegador, você precisará limpar manualmente o cache do navegador após cada teste / modificação em sua configuração ou teste nas janelas do navegador "anônimas" / "anônimas".

Como o apache httpd mescla as diretivas de configuração pode ser um pouco complicado. A sintaxe que você está usando parece um pouco inconsistente e pode ser a causa dos seus problemas:

ProxyPass /something https://192.168.1.100:6443/something
<Location /something>
ProxyPassReverse https://192.168.1.100:6443/something
</Location> 

Para maior clareza, use:

ProxyPass /something/endpoint !
ProxyPass /something https://192.168.1.100:6443/something
ProxyPassReverse /something https://192.168.1.100:6443/something

ou coloque tudo nas diretivas Location :

<Location /something>
  ProxyPass  https://192.168.1.100:6443/something
  ProxyPassReverse https://192.168.1.100:6443/something
</Location>
<Location /something/endpoint>
  ProxyPass  "!"
  Redirect permanent /something/otherendpoint
</Location>
    
por 07.02.2017 / 22:49