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 (comoLocation) 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.