Como Configurar Proxy Reverso Nginx em 2024

Como Configurar Proxy Reverso Nginx em 2024

O NGINX é um servidor web de alto desempenho amplamente reconhecido por sua estabilidade, recursos avançados e baixo consumo de recursos. Como proxy reverso, ele atua como intermediário entre as solicitações dos clientes e os servidores back-end, aumentando a segurança, o desempenho e a escalabilidade dos seus aplicativos.

Neste artigo, você aprenderá sobre o servidor proxy reverso NGINX, sua função em arquiteturas modernas da web e as etapas para configurá-lo. Nós orientaremos você pelo processo de instalação e configuração para garantir que seus aplicativos sejam executados de forma mais eficiente e segura.

Um proxy reverso NGINX é uma configuração de servidor que direciona o tráfego de entrada para vários servidores back-end com base na URL, garantindo a distribuição eficiente da carga e a acessibilidade dos recursos.

Um servidor proxy reverso NGINX vai além do simples redirecionamento de tráfego, desempenhando um papel crucial no aumento do desempenho dos web apps. Ele gerencia com eficiência tanto o conteúdo dinâmico quanto o estático, encaminhando-os para servidores adequados e garantindo processamento e fornecimento ideais.

Com o NGINX Plus, os usuários obtêm acesso a recursos aprimorados, como balanceamento de carga superior, recursos de monitoramento abrangentes e medidas de segurança reforçadas.

Em ambientes Kubernetes, o NGINX se destaca como um controlador de entrada, orquestrando o acesso externo aos serviços – um componente essencial na implantação de aplicativos escaláveis em nuvem.

Além disso, o NGINX aumenta a eficiência da rede por meio de sua funcionalidade de gateway de API, que simplifica o gerenciamento do tráfego de rede e garante um roteamento confiável para serviços upstream.

Sugestão de Leitura

Saiba como redirecionar tráfego usando o NGINX, seja de forma forma temporária ou permanente, com nosso tutorial completo.

Como Funciona o Proxy Reverso do NGINX?

Em sua essência, o proxy reverso do NGINX atua como uma ponte entre os dispositivos do cliente e os servidores de back-end, como o LiteSpeed ou o Apache, gerenciando as solicitações de entrada em uma configuração de proxy reverso.

Processo de Tratamento de Solicitações

Quando um cliente envia solicitações HTTP ao seu aplicativo da web, essas solicitações chegam primeiro ao servidor proxy reverso do NGINX. Em seguida, o NGINX examina os detalhes da solicitação, como URL e cabeçalhos, para determinar o tratamento adequado.

Para solicitações de conteúdo estático, o NGINX otimiza o fornecimento servindo conteúdo de seu cache, reduzindo significativamente os tempos de carregamento. Enquanto isso, as solicitações de conteúdo dinâmico que exigem processamento em tempo real são encaminhadas para o servidor back-end apropriado.

Tomada de Decisão para Encaminhamento de Servidor de Back-End

O NGINX usa vários métodos de balanceamento de carga para decidir para qual servidor back-end encaminhar as solicitações, tais como:

  • Round robin. Distribui as solicitações uniformemente entre todos os servidores, evitando que um único servidor fique sobrecarregado.
  • Menos conexões. Envia solicitações ao servidor com o menor número de conexões ativas, o que é adequado para conexões de longa duração.
  • Hash de IP. Atribui solicitações com base nos endereços IP do cliente, garantindo que o usuário interaja consistentemente com o mesmo servidor, o que pode ser útil para a persistência de sessão.

Configurações Avançadas

Para cenários complexos, você pode configurar regras do NGINX com base em cabeçalhos de solicitação, tipo de conteúdo e até mesmo módulos de código personalizados, abrindo a oportunidade para decisões precisas de encaminhamento.

Essa adaptabilidade permite que o NGINX direcione com eficiência o tráfego de aplicativos para servidores web e funcione como um proxy de encaminhamento para solicitações de saída, quando configurado para isso.

Pré-requisitos Para Configurar um Servidor Proxy Reverso NGINX

Antes de configurar um proxy reverso NGINX em um servidor virtual privado (VPS), certifique-se de ter os seguintes itens para uma configuração tranquila e eficaz:

  • Acesso ao servidor. Você precisará de acesso root ou sudo ao seu VPS para instalar software e modificar arquivos de configuração.
  • Domínio. O ideal é que você tenha um domínio apontando para o endereço IP do seu VPS. Essa configuração permite o acesso ao seu servidor proxy reverso NGINX usando o domínio em si em vez de um endereço IP.
  • Servidores de back-end. A principal função de um proxy reverso é rotear o tráfego para um ou mais servidores de back-end, como um servidor Apache. Certifique-se de que seus servidores back-end estejam corretamente configurados e em execução antes de prosseguir com a configuração do proxy reverso NGINX.
  • Configuração de rede. Seu VPS deve ser configurado para permitir o tráfego HTTP e HTTPS. Ajuste suas configurações de firewall para permitir conexões na porta 80 (HTTP) e na porta 443 (HTTPS).
  • Entendimento da configuração do NGINX. Familiarize-se com a sintaxe de configuração padrão do NGINX, pois a configuração de proxies reversos envolve a modificação de arquivos de configuração.
  • Certificados SSL (opcional, mas recomendado). Para conexões HTTPS, considere a possibilidade de obter um certificado SSL para o seu domínio. A criptografia protege os dados transmitidos entre o cliente e o proxy reverso.

Como Configurar NGINX Como Proxy Reverso

Agora, vamos orientar você na configuração de um proxy reverso NGINX em um VPS da Hostinger executando uma distribuição Ubuntu 22.04.

1. Instale o NGINX

Para configurar um proxy reverso NGINX, primeiro você precisa instalar o NGINX em seu VPS. Siga estas etapas para colocar o NGINX em funcionamento:

  1. Abra o PuTTY ou o cliente SSH de sua preferência e faça login no VPS usando suas credenciais.
  2. Atualize os pacotes do seu servidor para evitar possíveis conflitos e garantir que você tenha as correções de segurança mais recentes com esses comandos Linux:
sudo apt update
sudo apt upgrade -y
  1. Instale a versão mais recente do NGINX usando o gerenciador de pacotes, executando:
sudo apt install nginx -y
  1. O NGINX deverá iniciar automaticamente após a instalação. Para verificar se o NGINX está em execução, use:
sudo systemctl status nginx

A saída deve indicar que o serviço NGINX está active (running), semelhante ao exemplo a seguir:

● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-01-01 12:34:56 UTC; 2min 22s ago
Docs: man:nginx(8)
Main PID: 1234 (nginx)
Tasks: 2 (limit: 1152)
Memory: 5.3M
CGroup: /system.slice/nginx.service
├─1234 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─1235 nginx: worker process

Se o seu VPS tiver um firewall configurado, você também precisará permitir o tráfego para o NGINX. Para sistemas do Uncomplicated Firewall (UFW), habilite o tráfego nas portas apropriadas com:

sudo ufw allow 'Nginx Full'

2. Configure a Estrutura de Arquivo

Quando você instala o NGINX, o sistema define automaticamente vários diretórios e arquivos essenciais para sua configuração e operação.

A organização dos arquivos de configuração do NGINX é fundamental para adaptar sua funcionalidade a necessidades específicas, como o gerenciamento de diversas cargas de trabalho e o direcionamento eficiente de solicitações para vários servidores.

Estrutura Básica do Arquivo de Configuração do NGINX

O arquivo de configuração principal do NGINX é o nginx.conf, encontrado em /etc/nginx/. Esse arquivo contém configurações globais e inclui diretivas para extrair configurações adicionais de outros arquivos e diretórios:

  • /etc/nginx/nginx.conf. O principal arquivo de configuração do NGINX.
  • /etc/nginx/sites-available/. Armazena possíveis configurações de host virtual. Cada arquivo aqui representa um site distinto, que pode ser ativado ou desativado individualmente.
  • /etc/nginx/sites-enabled/. Contém links simbólicos para as configurações em sites-available que você deseja que o NGINX use. Somente as configurações vinculadas nesse diretório estão ativas.
  • /etc/nginx/conf.d/. Geralmente, contém configurações globais aplicáveis a todos os sites. Os arquivos que terminam em .conf nesse diretório são incluídos automaticamente na configuração principal do NGINX.

Diretivas Importantes do NGINX

Para utilizar o NGINX de forma eficaz, você precisa se familiarizar com suas principais diretivas:

  • server. Define um bloco de servidor – cada bloco de servidor pode hospedar um site ou parte de um site. Ele inclui diretivas como listen server_name.
  • location. Define como processar solicitações de diferentes recursos em um bloco de servidor. Os blocos de localização podem especificar o conteúdo da web e as configurações de proxy.

3. Configurar o NGINX como um Proxy Reverso

Para configurar o NGINX como um proxy reverso, você precisa criar um novo arquivo de configuração. Esse arquivo conterá os blocos de servidor e as diretivas necessárias para o roteamento de solicitações. Siga estas etapas:

  1. Navegue até o diretório de configuração:
cd /etc/nginx/sites-available/
  1. Use um editor de texto como o nano para criar um arquivo de configuração com o nome do seu site, por exemplo:
sudo nano exemplo.com
  1. No arquivo de configuração do NGINX, configure o servidor para escutar na porta 80, usando a diretiva proxy_pass para encaminhar solicitações de proxy para o servidor back-end:
server {
listen 80;
server_name exemplo.com;
location / {
proxy_pass http://ip_do_servidor_backend;
proxy_set_header Host $host; # Forwarded host
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
}
}

Substitua ip_do_servidor_backend pelo endereço IP real do seu servidor de back-end.

Configuração do Balanceamento de Varga

Para configurar um balanceador de carga, defina um bloco upstream e use proxy_pass em seu bloco de servidor para distribuir o tráfego entre vários servidores:

upstream myapp1 {
server backend1.exemplo.com;
server backend2.exemplo.com;
}
server {
listen 80;
server_name exemplo.com;
location / {
proxy_pass http://myapp1;
proxy_next_upstream error timeout;
# Additional settings...
}
}

Manipulação de Conteúdo Estático

Para aumentar a eficiência, forneça conteúdo estático diretamente do NGINX usando um bloco location separado:

server {
listen 80;
server_name exemplo.com;
location / {
proxy_pass http://ip_do_servidor_backend;
# Proxy settings...
}
location /static/ {
root /path/to/static/files;
expires 30d;
}
}

Ajuste das Diretivas de Proxy

Personalize a forma como o NGINX interage com seus servidores proxy usando várias diretivas proxy_ para aprimorar o desempenho e gerenciar com eficiência as solicitações:

  • proxy_pass. Especifica o protocolo e o endereço do servidor proxy. Aqui está o uso básico para encaminhar solicitações com base no URI da solicitação:
location / {
proxy_pass http://backend.exemplo.com;
}
  • proxy_set_header. Modifica ou adiciona cabeçalhos à solicitação enviada pelo servidor de origem, garantindo que ele receba todas as informações necessárias sobre a solicitação original:
location / {
proxy_pass http://backend.exemplo.com;
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;
}
  • proxy_cache. Permite armazenar em cache as respostas do servidor proxy. Configure junto com proxy_cache_path para definir os parâmetros do cache:
http {
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
location / {
proxy_pass http://backend.exemplo.com;
proxy_cache my_cache;
}
}
}
  • proxy_buffering. Controla o buffer de resposta. Desativá-lo pode reduzir a latência em casos de uso específicos:
location / {
proxy_pass http://backend.exemplo.com;
proxy_buffering off;
}
  • proxy_ssl. Garante conexões seguras ao servidor proxy com criptografia SSL:
location / {
proxy_pass https://backend.exemplo.com;
proxy_set_header X-Forwarded-Proto https;
}
  • proxy_buffer_size. Especifica o tamanho do buffer para a primeira parte da resposta:
location / {
proxy_pass http://backend.exemplo.com;
proxy_buffer_size 4k;
}
  • Tempo limite do proxy. Defina timeouts para o estabelecimento de conexão, leitura e envio de dados para o servidor proxy, respectivamente:
location / {
proxy_pass http://backend.exemplo.com;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}

4. Teste o Proxy Reverso NGINX

Depois de concluir a configuração do proxy reverso do NGINX, é hora de ativar as configurações, testar se há erros de sintaxe e aplicar as alterações necessárias. Aqui estão as etapas:

  1. Crie um link simbólico de seu arquivo de configuração em sites-available para sites-enabled para ativá-lo:
sudo ln -s /etc/nginx/sites-available/exemplo.com /etc/nginx/sites-enabled/
  1. Teste o NGINX para evitar a interrupção do serviço devido a possíveis configurações incorretas:
sudo nginx -t

Se forem detectados problemas no proxy reverso do NGINX, ele indicará onde eles estão, permitindo que você solucione e corrija os erros.

Recarregue ou Reinicie o NGINX

Para aplicar suas alterações de configuração, você pode recarregar ou reiniciar o servidor NGINX.

  • Recarregar o NGINX. É a melhor opção, pois aplica as alterações sem interromper as conexões existentes:
sudo systemctl reload nginx
  • Reiniciar o NGINX. Se necessário, você pode reiniciar totalmente o NGINX, embora isso interrompa brevemente o serviço:
sudo systemctl restart nginx

Às vezes, é necessário reiniciar para fazer alterações mais significativas ou solucionar erros do NGINX.

Conclusão

Neste guia, você aprendeu a configurar o NGINX como um servidor proxy reverso, passando pela instalação, a configuração e o teste do processo.

Ao gerenciar e distribuir uniformemente as solicitações de entrada, você garante que o servidor seja utilizado de forma otimizada e que os aplicativos da Web sejam executados sem problemas. 

Use estas etapas como ponto de partida para aprimorar o desempenho, a segurança e a escalabilidade do seu ambiente de servidor com o NGINX. Boa sorte!

Proxy Reverso NGINX: Perguntas Frequentes

Esta seção responderá às perguntas mais comuns sobre os servidores proxy reverso NGINX.

Quais São as Vantagens de Usar um Proxy Reverso NGINX?

O uso de um proxy reverso NGINX pode melhorar o desempenho ao equilibrar o tráfego entre vários servidores da web. Ele também aumenta a segurança e a escalabilidade nos data centers, tornando-o ideal para o gerenciamento de web apps.

Posso Usar o NGINX como um Proxy Reverso para Múltiplos Servidores de Back-End?

Sim, você pode usar o NGINX como proxy reverso para vários back-ends, mesmo aqueles que empregam tecnologias diferentes, como o Apache Tomcat. Essa configuração aprimora a alocação de recursos e aumenta o desempenho de outros servidores.

Que Preocupações de Segurança Devo ter em Mente ao Configurar um Proxy Reverso NGINX?

Ao configurar um proxy reverso NGINX, use SSL para proteger a transmissão de dados. Dada a sua função como ponto único de entrada, é fundamental aplicar medidas de segurança robustas. Além disso, garanta a configuração adequada dos WebSockets para manter uma comunicação segura e em tempo real.

Author
O autor

Bruno Santana

Jornalista formado pela Universidade Federal da Bahia, além de colaborador eventual do site MacMagazine e da editoria de cultura do Jornal A Tarde, de Salvador. Fascinado por tecnologia desde criança, criei meu primeiro blog no Wordpress aos 13 anos e nunca mais parei. Nas horas vagas, gosto de ir ao cinema e fazer experimentos na cozinha.