O que é um proxy reverso e como ele funciona?

Publicados: 2022-08-09
Servidores conectados em um mapa-múndi.
ArtemisDiana/Shutterstock.com

Os proxies reversos são uma ferramenta útil no kit de ferramentas de qualquer administrador de sistema. Eles têm muitos usos, incluindo balanceamento de carga, proteção contra ataques DDOS

O que são proxies reversos?

Um proxy regular, chamado de Forward Proxy, é um servidor através do qual a conexão de um usuário é roteada. De muitas maneiras, é como uma VPN simples, que fica na frente da sua conexão com a Internet. As VPNs são um exemplo comum disso, mas também incluem coisas como firewalls escolares, que podem bloquear o acesso a determinado conteúdo.

Um proxy reverso funciona um pouco diferente. É uma ferramenta de backend usada por administradores de sistema. Em vez de se conectar diretamente a um site que fornece conteúdo, um proxy reverso como o NGINX pode ficar no meio. Quando recebe uma solicitação de um usuário, ele envia para frente, ou “proxy”, essa solicitação para o servidor final. Este servidor é chamado de “servidor de origem”, pois é o que realmente responderá às solicitações.

Embora um usuário provavelmente saiba se está sendo roteado por meio de um proxy de encaminhamento, como uma VPN ou firewall, os proxies reversos são ferramentas de back-end. Até onde o usuário sabe, ele está apenas se conectando a um site. Tudo por trás do proxy reverso está oculto, e isso também traz vários benefícios.

Este efeito também acontece no sentido inverso. O servidor de origem não tem uma conexão direta com o usuário e verá apenas um monte de solicitações provenientes do IP do proxy reverso. Isso pode ser um problema, mas a maioria dos serviços de proxy, como o NGINX, adicionará cabeçalhos como X-Forwarded-For à solicitação. Esses cabeçalhos informarão ao servidor de origem o endereço IP real do cliente.

Para que servem os proxies reversos?

Os proxies reversos são bastante simples em conceito, mas provam ser uma ferramenta surpreendentemente útil com muitos casos de uso inesperados.

Balanceamento de carga

Um dos principais benefícios de um proxy reverso é o quão leve ele pode ser. Como eles apenas encaminham solicitações, eles não precisam fazer muito processamento, especialmente em situações em que um banco de dados precisa ser consultado.

Como configurar um balanceador de carga HAProxy
RELACIONADO Como configurar um balanceador de carga HAProxy

Isso significa que o gargalo geralmente é o servidor de origem, mas com um proxy reverso na frente dele, você pode facilmente ter vários servidores de origem. Por exemplo, o proxy pode enviar 50% das solicitações para um servidor e 50% para outro, dobrando a capacidade do site. Serviços como o HAProxy são projetados para lidar bem com isso.

Esse é um caso de uso muito comum, e a maioria dos provedores de nuvem, como a Amazon Web Services (AWS), oferecerá balanceamento de carga como um serviço, poupando o trabalho de configurá-lo por conta própria. Com a automação na nuvem, você pode até mesmo dimensionar automaticamente o número de servidores de origem em resposta ao tráfego, um recurso chamado “escalonamento automático”.

Balanceadores de carga como o Elastic Load Balancer da AWS podem ser configurados para se reconfigurarem automaticamente quando seus servidores de origem forem ativados e desativados, tudo possibilitado por um proxy reverso sob o capô.

RELACIONADO: Como começar a usar os Elastic Load Balancers da AWS

Cache

Como um proxy reverso geralmente responde muito mais rápido do que o servidor de origem, uma técnica chamada cache é comumente usada para acelerar solicitações em rotas comuns. O cache é quando os dados da página são armazenados no proxy reverso e solicitados apenas do servidor de origem uma vez a cada poucos segundos/minutos. Isso reduz drasticamente a tensão no servidor de origem.

Por exemplo, este artigo que você está lendo agora foi servido pelo WordPress, que precisa se comunicar com um banco de dados SQL para buscar o conteúdo e os metadados do artigo. Fazer isso para cada atualização de página é um desperdício, considerando que a página realmente não muda. Portanto, essa rota pode ser armazenada em cache e o proxy reverso apenas enviará de volta a última resposta para o próximo usuário, em vez de incomodar o WordPress novamente.

Uma rede dedicada de proxies reversos que armazena seu conteúdo em cache é chamada de Rede de Entrega de Conteúdo ou CDN. CDNs como CloudFlare ou Fastly são muito comumente usados ​​por grandes sites para acelerar a entrega global. Os servidores em todo o mundo que armazenam o conteúdo em cache são chamados de “nós de borda”, e ter muitos deles pode tornar seu site muito ágil.

Proteção de rede e privacidade

Como o usuário não sabe o que está por trás do proxy reverso, ele não poderá atacar facilmente seus servidores de origem diretamente. Na verdade, os proxies reversos são comumente usados ​​com servidores de origem em sub-redes privadas, o que significa que eles não têm nenhuma conexão de entrada com a Internet externa.

Isso mantém sua configuração de rede privada e, embora a segurança através da obscuridade nunca seja infalível, é melhor do que deixá-la aberta a ataques.

Essa confiança inerente também pode ser útil ao planejar sua rede. Por exemplo, um servidor de API que se comunica com um banco de dados é semelhante a um proxy reverso. O banco de dados sabe que pode confiar no servidor da API na sub-rede privada, e o servidor da API atua como firewall para o banco de dados, permitindo apenas as conexões corretas através dele.

Front-end configurável

Um dos benefícios de proxies reversos como o NGINX é o quão altamente configuráveis ​​eles são. Muitas vezes, é útil tê-los na frente de outros serviços apenas para configurar como os usuários acessam esses serviços.

Por exemplo, o NGINX é capaz de classificar solicitações de limite para determinadas rotas, o que pode impedir que abusadores façam milhares de solicitações para servidores de origem a partir de um único IP. Isso não impede os ataques DDOS, mas é bom ter.

O NGINX também pode encaminhar tráfego de vários nomes de domínio com blocos configuráveis ​​de “servidor”. Por exemplo, ele pode enviar solicitações para example.com para seu servidor de origem, mas enviar api.example.com para seu servidor de API especial ou files.example.com para seu armazenamento de arquivos e assim por diante. Cada servidor pode ter sua própria configuração e regras.

O NGINX também pode adicionar recursos extras aos servidores de origem existentes, como certificados HTTPS centralizados e configuração de cabeçalho.

Às vezes, é útil ter o NGINX na mesma máquina que outro serviço local, simplesmente para servir o conteúdo desse serviço. Por exemplo, as APIs da Web ASP.NET usam um servidor Web interno chamado Kestrel, que é bom para responder a solicitações, mas não muito mais. É muito comum executar o Kestrel em uma porta privada e usar o NGINX como um proxy reverso configurável.

Registro centralizado

Este é bem simples, mas ter a maior parte do seu tráfego passando por um serviço facilita a verificação dos logs. O log de acesso do NGINX contém muitas informações úteis sobre seu tráfego e, embora não supere os recursos de um serviço como o Google Analytics, é uma ótima informação.

RELACIONADO: Como configurar um painel de monitoramento e análise do Elasticsearch para sua empresa