Iniciante Fundamentos

Proxy reverso

Um proxy reverso recebe a requisição e a repassa para outro serviço interno, devolvendo a resposta ao cliente. É comum para colocar o Apache na frente de uma aplicação Node.js, Python ou outra que roda em uma porta interna.

Ativar os módulos

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo systemctl restart apache2

ProxyPass e ProxyPassReverse

<VirtualHost *:80>
    ServerName app.com

    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
  • ProxyPass: encaminha os pedidos para o serviço interno.
  • ProxyPassReverse: ajusta os cabeçalhos de resposta (como Location) para que o cliente veja a URL pública.

Encaminhar só um caminho

ProxyPass /api http://127.0.0.1:4000/
ProxyPassReverse /api http://127.0.0.1:4000/

Passar o IP real do cliente

ProxyPreserveHost On
RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s

ProxyPreserveHost On mantém o cabeçalho Host original na requisição interna.

Aplicar

sudo apache2ctl configtest
sudo systemctl reload apache2

Certifique-se de que o serviço interno está rodando antes de testar, ou o Apache devolverá erro 502.