Proxy Reverso Nginx (2)
Proxy Reverso com NGINX

Davi Galdino

Postado em 25 ago, 2023

  • proxy
  • nginx
  • web

Olá a todos! Eu sou Davi Galdino de Oliveira, graduando no 6º período, e atualmente trabalho como Desenvolvedor Front-End . No decorrer deste artigo, discutirei a implementação de um Proxy Reverso utilizando o servidor web Nginx. A proposta é aprimorar o desempenho e alcançar uma maior escalabilidade para as nossas aplicações web. Antes de entrarmos em detalhes práticos, é importante compreender alguns conceitos que nos ajudarão a alcançar nosso objetivo de forma eficaz.

Servidor Web

Um servidor web é uma infraestrutura fundamental para disponibilizar conteúdo na internet. O servidor web é composto por elementos que regulam a forma como os usuários interagem com os arquivos alojados. Isso é realizado através de um servidor HTTP, um software responsável por gerenciar as solicitações dos usuários e a entrega dos arquivos correspondentes.

O servidor HTTP é projetado para compreender URLs (Uniform Resource Locators) e o protocolo HTTP (Hypertext Transfer Protocol), que formam a base da comunicação na web. Quando os usuários inserem uma URL em seus navegadores, eles estão iniciando uma solicitação para o servidor web. O servidor HTTP interpreta essa solicitação, localiza o arquivo correspondente no sistema de arquivos e, em seguida, transmite esse arquivo de volta ao usuário, permitindo que a página da web seja exibida e interagida.

Dessa maneira, tanto os aspectos de hardware quanto os de software do servidor web colaboram harmoniosamente para oferecer uma experiência de navegação eficiente e eficaz aos usuários.

Proxy, O que é?

Após obtermos um entendimento básico acerca do conceito de servidor web, podemos explorar o Proxy, no qual desempenha o papel de intermediário entre o usuário e o servidor. O Proxy tem a responsabilidade de encaminhar solicitações e respostas entre o dispositivo do usuário e o servidor de destino, desempenhando diversas funções importantes.

Existem vários tipos de proxies, cada um com funcionalidades específicas:

Proxy de Reversão (Reverse Proxy):
Um proxy de reversão é colocado em frente a um ou mais servidores de destino para gerenciar e direcionar as solicitações dos clientes para o servidor correto. Ele é geralmente usado para melhorar o desempenho, distribuir a carga de tráfego, implementar segurança e fornecer recursos como cache, SSL offloading (descarregamento SSL) e autenticação.

Proxy de Encaminhamento (Forward Proxy): Um proxy de encaminhamento atua em nome dos clientes para acessar recursos em servidores de destino. Ele é utilizado para ocultar a identidade do cliente, melhorar a segurança, controlar o acesso à internet e fornecer recursos como cache e filtragem de conteúdo.

Proxy Transparente: Um proxy transparente é configurado de forma que os clientes não precisem alterar suas configurações para utilizá-lo. Ele intercepta as solicitações sem a necessidade de configurações explícitas no cliente, sendo geralmente usado para fins de filtragem e controle de acesso em redes corporativas.

Proxy SSL (Proxy HTTPS) Um proxy SSL é usado para terminar conexões SSL/TLS em nome dos servidores de destino. Isso permite que o proxy inspecione e, se necessário, modifique o tráfego criptografado antes de encaminhá-lo ao servidor final. Isso pode ser útil para implementar políticas de segurança e realizar inspeções de tráfego.

Ainda há diversos outros tipos de proxies nos quais oferecem funcionalidades específicas que atendem a diferentes necessidades, desde a melhoria do desempenho até a segurança e privacidade das comunicações.

enter image description here

Proxy Reverso

Como já vimos, Proxy possui a origem da conexão sempre dentro da rede, passa pelo proxy até a Internet, agora já o Proxy Reverso, a origem das requisições estão na Internet e buscam acessar um servidor dentro do ambiente, ou seja recebe requisições de vários clientes e os encaminha para determinado serviço, normalmente utilizados para tratar requisições destinadas à servidores que hospedam páginas de internet com algumas funções:

Balanceamento de Carga(Load Balancer) Como o servidor de Proxy Reverso permite que ele tenha conexão com vários servidores de destino, ele pode direcionar as requisições para cada um deles sem sobrecarregar nenhum.

Cache Armazena elementos da página armazenada nos servidores internos, fazendo com que os servidores de página recebam ainda menos requisições de rede, permitindo que trabalhem melhor.

Uma vez que já temos um entendimento de alguns conceitos básicos que são essenciais para compreender o Nginx, podemos prosseguir.

NGINX

Trata-se de um servidor web open source de alta performance, que adota uma arquitetura fundamentada em eventos (Event-Based Architecture). Essa abordagem possibilita a gestão de inúmeras conexões simultâneas, graças à sua notável escalabilidade e velocidade.

Uma vez que o Nginx opera com base em eventos, ele adota um modelo em que um processo mestre (worker) coordena múltiplos processos de trabalho (worker connections), realizando todo esse procedimento de maneira contínua e assíncrona.

O método empregado é a multiplexação, no qual o Nginx utiliza um único processo que abriga múltiplos canais de comunicação, onde cada canal é direcionado para um único cliente ou requisição.

Quando surge a necessidade de processamento, as worker connections entram em ação, encaminhando a solicitação para o worker correspondente por meio de multiplexação. É nesse ponto que o processamento ocorre, sendo então produzido o resultado que é posteriormente retornado.

Vantagens do uso do NGINX:

Eficiência em Velocidade: Graças à sua arquitetura orientada a eventos, as requisições são processadas com maior agilidade, aproveitando de forma otimizada a memória e os recursos da CPU.

Escalabilidade Aprimorada: O NGINX facilita a escalabilidade das requisições por meio de seu recurso de balanceamento de carga (Load Balancer).

Ampla Compatibilidade: Sua flexibilidade possibilita a integração com a maioria dos aplicativos web modernos.

Simplicidade na Configuração: A configuração do servidor web é simplificada, baseando-se em diretivas que são especificadas em um único arquivo. Isso facilita a administração e personalização do servidor.

Mamões ao Código

Uma vez que já abordamos todos os conceitos essenciais e delineamos claramente o que é o Nginx, percebe-se que o artigo atual se tornou substancialmente longo. Dado que tenho a intenção de fornecer uma explicação detalhada do código, linha por linha, decidi criar um novo artigo dedicado exclusivamente a essa seção, intitulada "Mamões ao Código".

Espero que você tenha assimilado bem os conceitos discutidos até agora! Mal posso esperar para encontrá-los no artigo "Mamões ao Código". Até lá!

Contato

Caso você tenha alguma dúvida sobre os conceitos abordados neste artigo, por favor, sinta-se à vontade para entrar em contato conosco. Estou aqui para ajudar!

Email: contato@daviga.dev.br
GitHub: Davi-Ga
Linkedin: daviga