Apache como Proxy Reverso: Redirecionando Rotas com Elegância

Se você quer que o Apache atue como um proxy reverso (encaminhando requisições para outro serviço na rede ou no próprio host), este post entrega o necessário, direto ao ponto.

Vamos assumir um caso comum: você quer que qualquer requisição para http://seuip/ollama/ seja redirecionada internamente para http://localhost:11434/.


Configuração do VirtualHost

Abra o arquivo de configuração apropriado (geralmente em /etc/apache2/sites-available/000-default.conf ou outro .conf da sua preferência) e adicione:

<VirtualHost *:80>
    ServerName 10.0.0.68

    ProxyPreserveHost On

    ProxyPass /ollama/ http://localhost:11434/ retry=0
    ProxyPassReverse /ollama/ http://localhost:11434/

    DocumentRoot /var/www/html
</VirtualHost>

Esse trecho diz:

  • Escute na porta 80.
  • Encaminhe tudo que vier para /ollama/ para o serviço interno rodando em localhost:11434.
  • Preserve o cabeçalho Host original.
  • Corrija redirecionamentos e cabeçalhos de resposta.

Habilitando os módulos necessários

Para isso funcionar, o Apache precisa dos módulos:

a2enmod proxy
a2enmod proxy_http

E depois:

systemctl restart apache2

Sem esses módulos, o Apache não reconhece as diretivas ProxyPass e ProxyPassReverse.


Testando

  1. Acesse: http://10.0.0.68/ollama/
  2. O Apache encaminhará a requisição para o serviço local (localhost:11434) mantendo o controle externo pela porta 80.

Segurança (opcional, mas recomendada)

Para uso em ambiente real, considere:

  • HTTPS com Let’s Encrypt ou certificado self-signed.
  • Autenticação básica com .htpasswd.
  • Restrição de IP com Require ip.
  • Rate limiting com mod_ratelimit ou integração com firewall.

Esse tipo de proxy é ideal para mascarar serviços, unificar múltiplos backends sob um domínio ou manipular requisições antes de chegar ao destino real.

Rolar para cima