O Que é um Proxy Reverso? Definição e Casos de Uso

Proxies reversos podem servir como uma ferramenta de criptografia mais eficiente, ajudando a alcançar balanceamento de carga distribuído, além de armazenar conteúdo localmente em cache, garantindo entrega rápida aos consumidores de dados. Este artigo é seu guia definitivo sobre proxies reversos
10 min de leitura
What Is a Reverse Proxy blog image

Considere que você está construindo um software financeiro de alto nível que processa transações de ações em tempo real. Os servidores da aplicação devem ser seguros e capazes de lidar com um grande número de solicitações sem qualquer lentidão.

É aqui que o proxy reverso entra em ação. Diferente dos proxies diretos, que controlam a identidade dos clientes, um proxy reverso foca em proteger os servidores de clientes e outras ameaças da Internet.

O Que É um Proxy Reverso?

Exemplo de como os proxies reversos funcionam

Um proxy reverso é um tipo de servidor que fica na frente de um ou mais servidores web (entre a Internet e os servidores web) e intercepta todas as solicitações dos usuários antes que cheguem aos servidores. Seu principal objetivo é aumentar o desempenho da rede, a escalabilidade e a segurança.

Um proxy reverso pode fornecer uma segurança robusta ao servidor, gerenciando a criptografia de dados SSL e garantindo que os servidores backend não sejam acessíveis diretamente pela Internet. Além disso, pode equilibrar as solicitações recebidas entre múltiplos servidores, evitando que um servidor fique sobrecarregado, melhorando, em última análise, o desempenho do servidor e minimizando o tempo de inatividade.

Como Funciona o Proxy Reverso?

Para entender melhor o proxy reverso, vamos discutir como ele funciona:

  1. Solicitação do Cliente– Um usuário tenta acessar a aplicação web através do Dispositivo 1 ou 2. A solicitação primeiro passa pela Internet e chega ao servidor proxy.
  2. Avaliação da Solicitação: O proxy reverso avalia a solicitação e decide se deve atendê-la a partir de seu cache ou enviá-la para um recurso de servidor real.
  3. Comunicação com Servidores Backend: Se não estiver em cache, o proxy reverso determina qual servidor backend é mais adequado para lidar com a solicitação com base na carga do servidor, tipo de conteúdo ou regras específicas de roteamento. Se estiver em cache, ele retorna a resposta através do cache.
  4. Processamento da Solicitação: Uma vez que o servidor backend processa a solicitação, ele envia a resposta de volta ao proxy reverso.
  5. Cache: Se o cache estiver habilitado, o proxy reverso armazenará em cache a resposta gerada através do recurso.
  6. Entrega da Resposta: O proxy reverso envia a resposta de volta ao cliente.

Como você pode perceber, esse processo é bem diferente do comportamento tradicional de proxy direto. O servidor proxy reverso serve principalmente para proteger os servidores backend dos riscos e usuários da Internet.

Proxy Direto vs Proxy Reverso

Um proxy direto é um tipo de servidor proxy colocado entre a máquina de um usuário e a Internet. Ele serve como um proxy para o usuário, filtrando conteúdo, fornecendo anonimato ou contornando restrições. Por exemplo, uma escola ou local de trabalho pode implementar um proxy direto para bloquear o acesso a determinados sites ou para monitorar atividades online.

Exemplo de como um proxy direto funciona

Essa mudança na posição do servidor proxy cria algumas diferenças significativas entre um proxy reverso e um proxy direto:

1. Direção do Tráfego: Proxies diretos enviam solicitações de saída de um usuário para a Internet. Proxies reversos lidam com solicitações de entrada da Internet para um servidor.

2. Anonimato: Proxies diretos fornecem anonimato para os usuários, enquanto proxies reversos protegem os servidores filtrando o tráfego de entrada e otimizando o balanceamento de carga.

3. Visibilidade: Os usuários estão cientes de um proxy direto. Eles podem configurar seu navegador ou configurações de rede para usá-lo. Em contraste, os proxies reversos são invisíveis para os usuários finais. Eles interagem com ele indiretamente através dos sites que visitam.

Além das diferenças acima, há muito em comum entre esses 2 tipos de proxy. A tabela abaixo fornecerá um resumo de todas as semelhanças e diferenças.

Tabela de comparação entre proxy direto e reverso

Benefícios do Uso de um Proxy Reverso

Usar um proxy reverso oferece várias vantagens importantes, como segurança aprimorada, escalabilidade, balanceamento de carga e desempenho. 

1. Segurança Aprimorada

  • Proteção Contra Ameaças Externas: Um proxy reverso é uma camada de proteção que fica entre usuários e servidores e atua como um escudo. Ele atua como primeira linha de defesa, bloqueando solicitações maliciosas antes que cheguem aos servidores internos, minimizando a probabilidade de ataques
  • Terminação SSL/TLS: Geralmente, os servidores são encarregados da terminação SSL/TLS. No entanto, um proxy reverso pode realizar as tarefas de criptografia e descriptografia para os servidores backend, liberando assim os recursos dos servidores para operações críticas. O trecho abaixo é uma configuração Nginx que protege o servidor via SSL (https) e então atua como um proxy reverso.
server {
    listen 443 ssl;
    server_name yourdomain.com;
    ssl_certificate /path/to/your_certificate.pem;
    ssl_certificate_key /path/to/your_private_key.pem;
    location / {
        proxy_pass http://your_backend_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

2. Escalabilidade

  • Flexibilidade do Servidor: Eles distribuem as solicitações dos usuários para o servidor correspondente, dependendo da carga atual do servidor. Assim, você pode adicionar ou remover servidores sem qualquer tempo de inatividade.
  • Manutenção e Atualizações: Ao utilizar um proxy reverso, você pode atualizar ou fazer manutenção nos servidores backend de forma sequencial, mantendo ainda assim a disponibilidade de toda a aplicação. Por exemplo, suponha que você seja responsável por um site que vende ingressos e o site precisa estar ininterrupto 24/7. Através de um proxy reverso, você pode atualizar os servidores backend um por um sem precisar tirar todo o serviço do ar.

3. Balanceamento de Carga

  • Distribuição de Tráfego: Um proxy reverso evita gargalos de desempenho ao distribuir as solicitações de entrada entre vários servidores, garantindo que nenhum servidor único suporte muita carga.
  • Verificações de Saúde: Proxies reversos modernos podem realizar verificações de saúde nos servidores backend, redirecionando o tráfego de servidores que estão fora do ar ou sob carga pesada. Por exemplo, no Nginx, você pode configurar um bloco upstream em seu arquivo de configuração que inclui parâmetros de verificação de saúde.
upstream backend_servers {
    server server1.example.com;
    server server2.example.com;
    server server3.example.com;

    zone backend 64k;

    # Health checks
    health_check interval=5 fails=2 passes=2 uri=/health;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend_servers;
    }
}

4. Desempenho

  • Cache de Conteúdo: Armazenar em cache recursos frequentemente solicitados no proxy reverso reduz o número de solicitações aos servidores backend. O exemplo abaixo mostra como configurar o Nginx para armazenar dados em cache com base nos códigos de resposta HTTP.
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=news_cache:10m max_size=1g inactive=60m use_temp_path=off;

server {
    listen 80;
    location / {
        proxy_cache news_cache;
        proxy_pass http://backend_servers;
        proxy_set_header Host $host;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
    }
}
  • Compressão: A compressão no nível do proxy reduz a quantidade de dados que precisam ser enviados pela rede. As configurações do Nginx abaixo habilitam a compressão gzip para os seguintes tipos de conteúdo: HTML, CSS, JSON, JavaScript e XML.
server {
    listen 80;
    location / {
        proxy_pass http://backend_servers;
        proxy_set_header Host $host;
        gzip on;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    }
}

Riscos Associados ao Uso de um Proxy Reverso?

Usar um proxy reverso oferece inúmeras vantagens. No entanto, como qualquer tecnologia, também apresenta riscos e desafios potenciais.

1. Ponto Único de Falha

Um proxy reverso pode se tornar um ponto único de falha na arquitetura da sua rede se não for gerenciado adequadamente. Como todo o tráfego de entrada para os servidores backend deve passar pelo proxy reverso, qualquer mau funcionamento pode tornar toda a aplicação inacessível.

Solução: Considere implementar instâncias redundantes de proxy reverso e use balanceamento de carga entre elas para garantir a disponibilidade mesmo se uma instância falhar.

2. Vulnerabilidades de Segurança

Embora os proxies reversos aumentem a segurança do servidor, qualquer vulnerabilidade no software do proxy reverso pode ser explorada, levando a violações significativas de segurança. 

Solução: Mantenha o software do proxy reverso atualizado com os patches de segurança mais recentes.

3. Inspeção de Tráfego

Proxies reversos são responsáveis por lidar com dados sensíveis que trafegam entre clientes e servidores. Se não forem devidamente protegidos, os dados sensíveis podem ser expostos através de configurações incorretas ou ataques.

Solução: Garanta criptografia forte para os dados em trânsito e em repouso. Realize auditorias e revisões regulares das configurações e controles de acesso para evitar vazamento de dados.

4. Erros de Configuração

Proxies reversos exigem uma configuração precisa para funcionar corretamente. Configurações incorretas podem levar a problemas como roteamento inadequado, vulnerabilidades abertas ou gargalos de desempenho. 

Solução: Use ferramentas de gerenciamento de configuração e sistemas de versionamento para rastrear mudanças, bem como facilitar a reversão em caso de erro.

5. Relação de Confiança

Normalmente, os proxies reversos envolvem relações fortes com os servidores backend devido à autenticação de usuários e validação de dados. A violação dessa relação de confiança pode resultar em acesso não autorizado e violações de dados.

Solução: Implemente uma estrutura robusta de autenticação e validação no balanceador de carga global e nos servidores backend para proteger esses recursos contra ameaças emergentes.

Usos Comuns de Proxies Reversos

Proxies reversos são uma ferramenta versátil que pode ser usada para muitos propósitos. Aqui estão alguns casos de uso comuns de proxies reversos:

  • Redes de Entrega de Conteúdo (CDNs) – Para armazenar conteúdo em cache nas bordas da rede, mais próximo do usuário.
  • Gateways Web Seguros – Para ocultar as identidades dos servidores backend de potenciais atacantes.
  • Sites e aplicações de alto tráfego – Para distribuir o tráfego de entrada entre vários servidores.
  • Serviços de Streaming – Para realizar tarefas como transcodificação ou ajuste da qualidade dos streams de vídeo em tempo real com base na largura de banda e capacidades do dispositivo do usuário.
  • Plataformas de E-commerce, Serviços Financeiros – Para inspecionar o tráfego de entrada em busca de ameaças de segurança.
  • Serviços Web Móveis – Para ajustar o conteúdo especificamente para dispositivos móveis (otimizar imagens e scripts)

Proxies reversos também são um bloco de construção essencial das arquiteturas em nuvem. Saiba mais em nosso guia sobre proxies em nuvem.

Conclusão

Um proxy reverso é um servidor posicionado entre a internet e os servidores backend, melhorando o desempenho da rede, a escalabilidade e a segurança. No entanto, os proxies reversos também podem apresentar alguns riscos, como criar um ponto único de falha, vulnerabilidades de segurança devido a configurações incorretas, problemas de relação de confiança, etc.

Embora esses desafios persistam, os proxies se tornaram uma parte tão importante das infraestruturas de TI modernas devido aos seus recursos de balanceamento de carga, cache e terminação SSL. Portanto, como desenvolvedores, devemos entender como diferentes tipos de serviços de proxy funcionam para melhorar nossas arquiteturas de aplicação. Não sabe qual provedor escolher? Compare os melhores provedores de proxy, ou experimente nossos serviços de proxy gratuitamente!