O que é um proxy reverso?
Um proxy reverso protege os seus servidores públicos, atuando como intermediário: recebe os pedidos dos clientes, reencaminha-os para os servidores backend e entrega a resposta ao utilizador.
Como funciona um proxy inverso?
Em termos gerais, um servidor proxy funciona como uma interface de comunicação na rede, que recebe pedidos e os reencaminha em nome do cliente para um servidor de destino. O proxy inverso situa-se sempre entre os clientes (por exemplo, os navegadores web) e os servidores backend (como servidores web, de bases de dados ou de aplicações). Sempre que é efetuada uma solicitação a partir do cliente, ele entra em ação e decide se deve reencaminhá-la e para que servidor interno. Este processo decorre em quatro passos básicos:
- Recepção do pedido do cliente: o proxy inverso recebe pedidos HTTP, HTTPS ou outros protocolos, como FTP ou WebSocket.
- Análise do pedido: o proxy verifica se o pedido é válido, se representa um risco de segurança e se existe uma versão armazenada na cache.
- Reencaminhamento para o servidor adequado: quando não é possível responder a partir do cache, o proxy inverso envia a solicitação para um dos servidores internos.
- Resposta ao cliente: o proxy inverso recebe a resposta do servidor backend, processa-a se necessário (por exemplo, aplicando encriptação) e devolve-a ao cliente que a solicitou.

Em que difere de um proxy de reencaminhamento?
Enquanto os proxies inversos, como já explicámos, são colocados entre os clientes e os servidores backend, os proxies de reencaminhamento situam-se entre os clientes e a própria Internet. Um proxy de reencaminhamento canaliza todos os pedidos dos clientes e reenvia-os para os servidores de destino utilizando o seu próprio endereço de remetente. Desta forma, as respostas dos servidores também chegam primeiro ao proxy, que depois as distribui aos dispositivos clientes correspondentes. Isto permite manter o anonimato dos utilizadores, exceto no caso de um proxy transparente. Em resumo: enquanto um proxy de reencaminhamento protege os clientes de uma rede interna contra ameaças externas, um proxy inverso protege os servidores numa rede pública e melhora a sua disponibilidade.
Assim, os proxies inversos destacam-se por oferecerem vantagens claras para a infraestrutura de servidores, graças a funcionalidades como o balanceamento de carga e a segurança avançada, enquanto os proxies de reencaminhamento se concentram na proteção e no anonimato dos clientes.

Proxy inverso: casos de utilização
A centralização dos pedidos dos clientes permite controlar com precisão o tráfego de entrada através de um proxy inverso. Graças a isso, é possível, entre outras coisas, disponibilizar vários servidores sob o mesmo URL, distribuir os pedidos de forma equilibrada entre diferentes servidores e acelerar a entrega de dados através do cache. A seguir, apresentamos as principais áreas de aplicação de um servidor proxy inverso.
Equilíbrio de carga
Com um proxy inverso situado à frente dos servidores, é possível associar uma mesma URL a vários sistemas dentro da rede interna. Isto permite distribuir os pedidos recebidos por vários servidores. Este balanceamento de carga evita a sobrecarga de um único sistema e funciona como medida de compensação em caso de falha. Se um servidor deixar de estar disponível devido a erros de hardware ou software, o módulo de balanceamento do proxy redireciona automaticamente as solicitações para os servidores restantes. Desta forma, a disponibilidade dos serviços do servidor é mantida mesmo em caso de falhas.
Caché
Para acelerar a velocidade dos serviços do servidor, um proxy inverso pode incorporar uma função de cache que permite armazenar temporariamente os conteúdos mais solicitados. Graças a este mecanismo, o proxy é capaz de responder por si próprio a pedidos repetidos, seja parcial ou totalmente.
Os conteúdos estáticos, como imagens ou folhas de estilo em cascata (CSS), são armazenados na cache do proxy, reduzindo assim a necessidade de recorrer ao servidor backend e melhorando significativamente os tempos de acesso aos serviços web. No entanto, no caso de conteúdos que mudam com frequência, nem sempre é garantido que a cache do proxy contenha a versão mais recente, o que pode fazer com que os clientes recebam informações desatualizadas.
Medidas de proteção e segurança
Um proxy inverso funciona como uma espécie de escudo para os servidores backend e pode oferecer várias funcionalidades de segurança:
- Proteção contra DDoS: os proxies inversos podem detetar e bloquear tráfego suspeito ou invulgarmente elevado no contexto de ataques DDoS, antes que este chegue aos servidores backend.
- Web Application Firewall (WAF): muitos proxies inversos incluem um WAF que permite filtrar pedidos maliciosos, como injeções SQL ou cross-site scripting (XSS).
- Listas de acesso permitido/negado (whitelisting e blacklisting de IP): o proxy pode, se necessário, bloquear determinados endereços IP ou permitir apenas ligações a partir de redes autorizadas.
- Ocultação dos servidores backend: o proxy impede que os endereços IP internos dos servidores backend sejam visíveis publicamente, o que dificulta possíveis ataques.
Encriptado
Para aliviar a carga dos servidores backend, os proxies inversos também podem ser utilizados para a encriptação. Neste caso, o proxy desencripta o pedido SSL/TLS do cliente (por exemplo, uma ligação HTTPS), reencaminha os dados já desencriptados para os servidores backend e envia a resposta novamente encriptada ao cliente. A comunicação interna pode ser realizada tanto de forma não encriptada como encriptada.
Anonimização
Um proxy inverso também pode ser utilizado para anonimizar o tráfego, ocultando os endereços IP originais dos clientes ou substituindo-os pelos seus próprios endereços IP. Desta forma, protege-se a privacidade dos clientes, uma vez que os endereços IP reais não aparecem nos registos. Além disso, isto permite implementar o balanceamento de carga geográfico: os pedidos podem ser redirecionados para o servidor mais próximo, em função da localização geográfica do utilizador ou da utilizadora.
Compressão
Com o software adequado, um proxy inverso pode ser utilizado para a compressão de dados de entrada e saída. Um programa muito popular para a compressão de páginas web é o gzip, que é frequentemente utilizado em combinação com os servidores web Apache ou NGINX.