O Que é um Reverse Proxy e Quando Usar
Um reverse proxy é um servidor intermediário que recebe pedidos dos visitantes e reencaminha-os para o servidor de origem (backend). O visitante comunica com o proxy, não directamente com o servidor. É o oposto de um proxy normal (forward proxy), onde o proxy actua em nome do cliente — aqui actua em nome do servidor.
Como funciona
O visitante acede a seudominio.pt. O DNS aponta para o reverse proxy. O proxy recebe o pedido, decide para onde o reencaminhar (pode ter múltiplos backends), encaminha para o servidor correcto, recebe a resposta e devolve-a ao visitante. O visitante nunca sabe que há um intermediário.
Porque usar
Segurança: o IP real do servidor fica escondido. Ataques DDoS atingem o proxy, não o servidor. O proxy pode filtrar pedidos maliciosos antes de chegarem ao backend. O Cloudflare funciona exactamente como reverse proxy — por isso esconde o IP do servidor.
Performance: o proxy pode fazer cache de conteúdo estático e servir directamente sem contactar o backend. Pode comprimir respostas, combinar ficheiros e optimizar a entrega. O Nginx é frequentemente usado como reverse proxy à frente do Apache especificamente para performance.
Load balancing: o proxy pode distribuir pedidos entre múltiplos servidores backend. Se um server cai, o proxy redireciona automaticamente para os outros — alta disponibilidade sem que o visitante note.
SSL termination: o proxy gere os certificados SSL e a encriptação/desencriptação. Os backends comunicam em HTTP internamente (mais rápido), enquanto a ligação com o visitante é HTTPS segura.
Aplicações práticas
Cloudflare: o reverse proxy mais usado na web. Combina CDN, WAF, DDoS protection e SSL num só serviço.
Nginx como proxy: em VPS e servidores dedicados, o Nginx à frente do Apache combina a eficiência do Nginx para conteúdo estático com a flexibilidade do Apache para PHP (.htaccess).
Múltiplas aplicações: um único domínio com /app1 servido por um servidor Node.js e /app2 por um servidor Python — o reverse proxy roteia para o backend correcto baseado no URL.