
Estou tentando criar um proxy em uma URL do meu site "mestre" para um site remoto, "leste", mas fico preso em um loop de redirecionamento. Este não é o comportamento que eu esperava - entendi que o ProxyPass reescreveria o conteúdo para o URL, mas acho que está agindo como se estivesse redirecionando para o host "mestre".
O arquivo de configuração aplicado é bastante simples:
user@master:/etc/apache2/conf-enabled# cat multisite_proxy.conf
<Location /prod_east>
ProxyPass http://east.domain.com/prod_east
ProxyPassReverse http://east.domain.com/prod_east
</Location>
usando cURL, minha saída é como:
user@master:~# curl -IL https://master.domain.com/prod_east/
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 22:58:41 GMT
Server: Apache/2.4.38 (Debian)
Location: https://master.domain.com//prod_east/
Content-Type: text/html; charset=iso-8859-1
...
curl: (47) Maximum (50) redirects followed
Os logs do Apache no leste estão mostrando as solicitações do cURL.
Se eu navegar, http://east.domain.com/prod_east
sou redirecionado para a página de login de um aplicativo (o que espero). Examinando isso com cURL, vejo:
user@master:~# curl -IL http://east.domain.com/prod_east
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache/2.4.38 (Debian)
Location: https://east.domain.com//prod_east
Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache
Location: https://east.domain.com/prod_east/subpath/
Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 302 FOUND
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache
Vary: Cookie
Cache-Control: no-cache
**Location: /prod_east/subpath/login.py?_origtarget=index.py**
Content-Type: text/html; charset=UTF-8
A última entrada Location: me fez pensar: está dizendo ao cliente para redirecionar para /prod_east/
, mas espero que isso seja solicitado por east.domain.com
causa das regras do ProxyPass.
O módulo Proxy está habilitado, assim como o módulo de reescrita.
Qualquer ajuda? Claramente não estou entendendo alguma coisa aqui...
Desde já, obrigado.
Responder1
O problema aqui era que o site "leste" estava forçando um redirecionamento para HTTPS e o Apache não estava configurado para fazer proxy de conteúdo TLS. Depois de ativar o SSLProxy em "master" e atualizar multisite_proxy.conf
para se referir a https (ignorando o redirecionamento HTTP-> HTTPS), isso agora está funcionando.