Preservando o IP/HOST de origem em servidores Apache como cliente mod_proxy

image_pdfimage_print

Quando seu sistema está em um servidor web recebendo requisições de um servidor web apache2 através de mod_proxy, é comum verificar, justamente por estar atrás de um outro servidor, que as requisições são recebidas e logadas com o IP do servidor Apache2 que está a frente no tratamento da requisição.

Este é o comportamente padrão esperado, mas que surpreende diversos administradores, que gostariam de ter o ip original da requisição disponível e logado no servidor final/interno. E para que isto ocorra, é necessário alterar a configuração padrão do sistema Apache2 que está está servindo de mod_proxy para que o mesmo forneça o cabeçalho X-Forwarded-For e com isto o log do sistema ‘cliente’ possa funcionar da maneira esperada pelos administradores em geral.

Iremos apresentar abaixo uma das forma de fazer os dois servidores operarem de modo que o servidor que está operando ‘atrás’ do principal em modo proxy tenha acesso as informações da originais da requisição

  1. Quando o servidor proxy é uma Apache2 usando a configuração ProxyPreserveHost em mod_proxy
    1. Esta diretriz de configuração pode ser utilizada para preserva o host remoto. Isto é útil para situações onde o hosts virtuais baseados em nome e o servidor de backend e precisam conhecer/saber o nome do host virtual
    2. Abra o arquivo de configuração do md_proxy do seu servidor e entre com a diretriz de configuração ProxyPreserveHost On.
    3. Reinicialize o servidor apache2 para a configuração passar a valer

Apenas  como exemplo de como inserir a diretriz de configuração, abaixo um arquivo de configuração de exemplo:

 <VirtualHost *:80>
    ServerName servidor_interno_respondendo_externamente.drall.com.br
    RewriteEngine On
    ProxyPreserveHost On
    ProxyPass / http://ip_interno_para_redirecionar/
    ProxyPassReverse / http://ip_interno_para_redirecionar/
    ServerAdmin usuario_administrador@drall.com.br
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!