INTRODUÇÃO
Na configuração do proxy reverso do apache Web Server, podemos ter situações onde queremos mapear paths com ou sem o proxy reverso. Isso tudo dentro do mesmo servidor Apache, sem precisar criar outro servidor Apache (isto é, criar outro container para subir outro Apache para resolver o problema sem proxy reverso).
CONFIGURAÇÃO
Para fazer isso, nos arquivos de configurações do apache, com a extensão .conf, por exemplo[1], devemos informar a diretiva "!" para o proxy reverso não estar ativo para um determinado path, por exemplo.
Conforme documentação[2], temos o seguinte exemplo de configuração:
ProxyPass /site/recursos/docs !
ProxyPassReverse /site/recursos/docs !
ProxyPass /site/recursos "http://backend.exemplo.com"
ProxyPassReverse /site/recursos "http://backend.exemplo.com"
Nesse caso, ao acessar o path "/site/recursos/docs" não funcionará o proxy reverso. Mas o que estiver configurado no Apache além disso (como acesso a diretório ou outras configurações) pode funcionar, sem conflitar com a configuração do Proxy Reverso.
Observação: A ordem dos paths é importante, colocando primeiro o path mais detalhado possível para o mais geral. Pois na execução do proxy reverso, verá se o path "/site/recursos" tem proxy reverso, nesse caso, a primeira configuração é "/site/recursos/docs" o que não "bate" (match), e indo para a configuração seguinte que dará "match" e será executada (indo para a URL http://backend.exemplo.com).
Se fosse o contrário (configurações invertidas, onde temos o path "/site/recursos" primeiro), ao chamar a URL "/site/recursos/docs" fará um match com a configuração "/site/recursos" apenas no começo (porque esse path é mais geral) e será válido o match, sendo executado o proxy reverso da configuração "/site/recursos" que chamará a URL http://backend.exemplo.com o que estará errado, segundo as nossas configurações.
A seguir, temos o restante da configuração para mapear o path "/site/recursos/docs" para o sistema de arquivos (File System) do servidor:
DocumentRoot "/var/local/docs"
Alias /site/recursos/docs "/var/local/docs"
<Directory "/var/local/docs">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
A configuração do proxy reverso e depois a configuração do diretório (nesse ordem) devem estar dentro da tag "VirtualHost" do arquivo de configuração do Apache Httpd.
CONCLUSÃO
Com essa configuração conseguimos desativar o proxy reverso somente para um determinado path e evitando o conflito com outras configurações de proxy reverso para outros paths. Sem isso, precisaríamos criar outros servidores/containers para isolar isso, o que sempre pode não ser possível.
REFERÊNCIAS
[1] Dependendo da versão do Apache e até do sistema operacional subjacente, pode ter mudanças na organização dos arquivos de configuração. Uma vez entendido essas mudanças, a essência das configurações descritas nesse artigo, permanece a mesma, somente variando a sintaxe e localização desses arquivos de configuração.
[2] https://httpd.apache.org/docs/2.4/mod/mod_proxy.html

Nenhum comentário:
Postar um comentário