O que é um proxy reverso e como ele funciona?

0
34


Receita de Loção para o Rosto com...
Receita de Loção para o Rosto com Aveia
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 comum, chamado de Forward Proxy, é um servidor através do qual a conexão de um usuário é roteada. De muitas maneiras, é como uma simples VPN, em frente à 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 back-end 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 ele recebe uma solicitação de um usuário, ele envia essa solicitação para o servidor de back-end. 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 direto, 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.

No entanto, esse efeito também ocorre de forma inversa. 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, adiciona cabeçalhos como X-Forwarded-For to Request 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, não precisam fazer muito processamento, principalmente em situações em que um banco de dados precisa ser consultado.

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 serviços em nuvem, como a Amazon Web Services (AWS), oferece balanceamento de carga como um serviço, evitando o incômodo de configurá-lo por conta própria. Com a automação na nuvem, você pode até dimensionar automaticamente o número de servidores de origem em resposta ao tráfego, um recurso chamado “escalonamento automático”.

Os load balancers, como o AWS Elastic Load Balancer, podem ser configurados para reconfigurar automaticamente quando seus servidores de origem são ativados ou desativados, tudo isso possibilitado por um proxy reverso sob o capô.

RELACIONADO: Conceitos básicos do AWS Elastic Load Balancers

cache

Como um proxy reverso geralmente responde muito mais rápido que o servidor de origem, uma técnica chamada cache é comumente usada para acelerar solicitações em caminhos comuns. O cache é quando os dados da página são armazenados no proxy reverso e são solicitados apenas do servidor de origem uma vez a cada poucos segundos/minutos. Isso reduz drasticamente o estresse 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 obter 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 simplesmente enviará 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. Sites grandes geralmente usam CDNs como CloudFlare ou Fastly para acelerar a entrega global. Servidores em todo o mundo que armazenam 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 do banco de dados, permitindo apenas as conexões corretas através dele.

interface 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 pode qualificar solicitações de limite para determinados caminhos, 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, você pode enviar solicitações para example.com para o seu servidor de origem, mas envie api.example.com ao seu servidor de API especial ou files.example.com para o armazenamento de arquivos e assim por diante. Cada servidor pode ter suas próprias configurações e regras.

O NGINX também pode adicionar recursos adicionais 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 NGINX Access Log contém muitas informações úteis sobre seu tráfego e, embora não vá além dos recursos de um serviço como o Google Analytics, ainda é uma ótima informação.

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