Proxy reverso usando NGINX Plus

NGINX | 10 de abril de 2014

O NGINX conquistou merecidamente a fama de servidor web de altíssimo desempenho. Acredito que muitas pessoas saibam que o NGINX também pode ser usado como proxy reverso, mas talvez não tenham noção de como ele é poderoso nessa função.

O que é um proxy reverso?

Vamos começar dando um passo atrás e perguntando: o que é um servidor proxy? Acho que a Wikipedia tem uma boa definição:

“[Um] servidor proxy é um servidor (um sistema de computador ou um aplicativo) que atua como intermediário nas solicitações de clientes que buscam recursos de outros servidores.”

Portanto, um servidor proxy fica entre um cliente e o servidor real que hospeda os dados que o cliente está procurando. Para o cliente, o servidor proxy parece ser o servidor de backend real; já para o servidor de backend, o servidor proxy parece ser um cliente. Para definir um servidor proxy reverso, recorremos novamente à Wikipédia:

“[Um] proxy reverso é um tipo de servidor proxy que recupera recursos de um ou mais servidores em nome de um cliente.”

A diferença é que um servidor proxy fica entre os clientes e apenas um servidor de backend, enquanto um servidor proxy reverso fica à frente de um ou mais servidores de backend e decide qual deles usar para cada solicitação.

Quais são os benefícios de usar um proxy reverso?

Por que você usaria um servidor proxy reverso? Há vários benefícios:

  • Concorrência – Aplicações de Internet geralmente envolvem um grande número de clientes, cada um abrindo várias conexões, o que resulta em uma quantidade muito grande de conexões com os servidores de backend. Muitos servidores web e servidores de aplicações não lidam bem com um grande número de conexões (o NGINX, quando usado como servidor web, é uma exceção). Portanto, adicionar um proxy reverso capaz de gerenciar melhor várias conexões pode melhorar significativamente o desempenho dos servidores de backend.
  • Resiliência – Se os clientes estiverem se conectando diretamente a um servidor de backend e ele apresentar uma falha, todos os clientes conectados no momento (ou tentando se conectar) ao servidor terão suas solicitações malsucedidas. Um servidor proxy reverso pode monitorar a integridade dos servidores de backend e deixar de enviar solicitações a um servidor com falha até que ele volte a funcionar. Os clientes não veem nenhum erro, pois o proxy reverso envia automaticamente suas solicitações aos servidores de backend que ainda estão operacionais.
  • Escalabilidade – Como um proxy reverso é a única “face pública” do grupo de servidores de backend, você pode adicionar e remover servidores de acordo com as variações na carga de tráfego.
  • Roteamento de camada 7 – Um proxy reverso vê o tráfego direcionado a todos os servidores e pode tomar decisões inteligentes sobre para onde enviar cada solicitação, modificando solicitações e respostas conforme necessário. Ele pode tomar decisões de roteamento com base em um determinado cabeçalho HTTP da solicitação, em parte de uma URL, na localização geográfica do cliente e assim por diante.
  • Cache – Um proxy reverso é um ótimo lugar para armazenar conteúdo em cache – geralmente, é muito mais eficiente armazená-lo ali do que enviar todas as solicitações aos servidores de backend e fazer com que cada um deles crie seu próprio cache.
  • Outras funções – Por estar posicionado à frente dos servidores de backend, um proxy reverso também pode desempenhar outras funções, como controle de tráfego com base na largura de banda ou na taxa de solicitações, limitação de conexões, integração com diversos esquemas de autorização, monitoramento de atividades e muito mais.

Usando o NGINX Plus como proxy reverso

O NGINX Plus adiciona ainda mais recursos às renomadas funcionalidades de servidor web do NGINX Open Source, tornando o NGINX Plus um controlador de entrega de aplicações (ADC) completo, capaz de substituir appliances de hardware proprietários.

Veja a seguir apenas alguns dos recursos disponíveis no NGINX Plus.

Balanceamento de carga

Há vários algoritmos de balanceamento de carga disponíveis, tanto ponderados quanto não ponderados. Também há suporte à persistência de sessão. O NGINX Plus pode balancear a carga de HTTP, HTTPS, WebSocket, FastCGI, memcached, SCGI, SPDY [substituído pelo HTTP/2, cujo balanceamento de carga também é realizado pelo NGINX Plus] e uwsgi. Saiba mais.

Verificações de integridade

Há suporte ao monitoramento passivo e ativo da integridade dos servidores de backend. Se o NGINX Plus não conseguir se conectar a um nó, esse nó será marcado como indisponível. As verificações ativas de integridade também podem ser configuradas para serem executadas periodicamente nos nós de backend. Além disso, o recurso de inicialização lenta pode ser usado para que o NGINX Plus aumente gradualmente o tráfego para um nó que acabou de ficar online, evitando sobrecarregá-lo com um pico de tráfego intenso. Saiba mais.

Roteamento de solicitações

O tráfego pode ser roteado com base em qualquer parte de uma solicitação, como o endereço IP do cliente, o nome do host, o URI, a string de consulta, os cabeçalhos etc.

Reescrita de solicitações e respostas

Qualquer parte de uma solicitação ou resposta pode ser modificada, incluindo cabeçalhos, corpo e URI. O NGINX Plus também pode adicionar e excluir cabeçalhos. Saiba mais.

Cache

As respostas podem ser armazenadas em cache, e você pode configurar os tipos de conteúdo que serão armazenados e por quanto tempo. Também é possível remover itens do cache. Saiba mais.

Compactação

Há suporte à compactação Gzip, com controle detalhado sobre qual conteúdo compactar e quando usar a compactação. Leia mais.

Processamento de SSL/TLS

Há suporte para descriptografia e criptografia SSL/TLS, e a descriptografia pode ser realizada para vários nomes de domínio usando certificados diferentes. Leia mais.

Monitoramento e registro de atividades em tempo real

As estatísticas do NGINX Plus codificadas no formato JSON estão disponíveis por meio de uma simples solicitação HTTP. Uma página de painel é fornecida para exibir as estatísticas, ou você pode enviá-las para ferramentas de monitoramento personalizadas ou de terceiros. Logs com formato personalizado podem ser configurados tanto para registro local quanto para exportação para o syslog. Leia mais.

E muito mais

O NGINX oferece muitos outros recursos, como suporte a streaming de vídeo, proxy de e-mail, GeoIP, reinicializações e atualizações sem interrupção, controle de tráfego, limitação de conexões e muito mais. Para mais informações, acesse nginx.com e nginx.org.


Compartilhar
Tags: F5 NGINX, Tech

Sobre o autor

Rick Nelson
Rick NelsonVice-presidente regional de Engenharia de Soluções

Mais publicações de Rick Nelson

Publicações relacionadas no blog

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade
NGINX | 10/10/2024

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade

Descubra como o F5 NGINX One aprimora o gerenciamento e a observabilidade de ambientes híbridos e multicloud ao oferecer um console web centralizado baseado em SaaS, com insights em tempo real, conformidade automatizada e gerenciamento simplificado de configurações.

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa
NGINX | 17/06/2024

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa

Descubra como transformar uma definição de esquema OpenAPI em uma configuração NGINX totalmente funcional, operando como um API Gateway com a segurança de um Web Application Firewall e um Portal do Desenvolvedor, usando uma abordagem declarativa de API.

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor
NGINX | 14/07/2021

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor

Picos de tráfego e sobrecarga de servidores são preocupações sérias para varejistas online em qualquer época, mas especialmente durante a “Cyber Season” de compras de fim de ano. Detalhamos como você pode aproveitar as soluções de entrega de aplicações de nível de produção da NGINX para se preparar para aumentos repentinos de tráfego.

Distribuição segura de chaves privadas SSL com o NGINX
NGINX | 02/04/2019

Distribuição segura de chaves privadas SSL com o NGINX

Descrevemos três maneiras progressivamente mais seguras de proteger chaves privadas SSL ao configurar o NGINX para processar tráfego HTTPS: permitir acesso de leitura apenas ao usuário root, criptografar as chaves com senhas armazenadas separadamente e distribuir as senhas a partir de um repositório central.

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX
NGINX | 24/05/2018

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX

O módulo JavaScript do NGINX lançado com o NGINX Plus R15 oferece suporte a subsolicitações, possibilitando uma classe totalmente nova de casos de uso para o NGINX Plus. Este exemplo completo também usa a API do NGINX Plus e os módulos de chave-valor para converter solicitações de API dos clientes em solicitações separadas para as APIs dos microsserviços que compõem um aplicativo.

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus
NGINX | 19/04/2016

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus

Confira dicas para evitar o esgotamento de portas efêmeras com ajustes no kernel do Linux, conexões keepalive e conexões vinculadas dinamicamente a endereços IP locais.

Proxy reverso usando NGINX Plus | F5