NGINX com proxy reverso
Introdução ao NGINX e ao proxy reverso
O NGINX é um servidor HTTP de alto desempenho, um servidor proxy reverso e um software de código aberto usado por muitos sites em todo o mundo. Sua versatilidade e velocidade o tornaram uma escolha popular para hospedagem na Web, balanceamento de carga, armazenamento em cache e proxy reverso. Um proxy reverso, em particular, é uma ferramenta poderosa que fica na frente de um servidor da Web e encaminha as solicitações dos clientes para os servidores de back-end apropriados. Este artigo abordará os conceitos básicos do NGINX com proxy reverso e como configurá-lo de forma eficaz.
O que é um proxy reverso?
Um proxy reverso atua como um intermediário entre os clientes e os servidores de backend. Ao contrário de um proxy comum, que é usado pelos clientes para acessar recursos de forma anônima, um proxy reverso é posicionado no lado do servidor, tratando as solicitações dos clientes e distribuindo-as para os servidores de backend apropriados. Os principais benefícios do uso de um proxy reverso incluem:
- Balanceamento de carga: Distribuição de solicitações de clientes em vários servidores, evitando a sobrecarga em um único servidor e melhorando o desempenho geral.
- Segurança e anonimato: ocultação dos endereços IP dos servidores de back-end, protegendo-os da exposição direta à Internet.
- Cache: armazenamento em cache de conteúdo estático para acelerar a entrega de recursos solicitados com frequência.
- Terminação de SSL: Descarregar a criptografia e a descriptografia SSL/TLS para o proxy reverso, reduzindo a carga de processamento nos servidores de back-end.
Por que usar o NGINX como proxy reverso?
O design leve e a arquitetura sem bloqueios do NGINX o tornam uma excelente opção para um proxy reverso. Ele pode lidar com um grande número de conexões simultâneas com baixo consumo de recursos, o que o torna ideal para sites com alto tráfego ou que precisam manter alta disponibilidade. Algumas vantagens de usar o NGINX como proxy reverso incluem:
- Alto desempenho: O NGINX foi projetado para lidar eficientemente com um grande número de conexões, o que o torna perfeito para ambientes que exigem tempos rápidos de solicitação-resposta.
- Flexibilidade: O NGINX permite a fácil configuração de vários servidores de back-end, possibilitando configurações complexas de balanceamento de carga e failover.
- Escalabilidade: À medida que o tráfego aumenta, você pode adicionar mais servidores backend e equilibrar a carga sem interrupções.
- Recursos de segurança: O NGINX pode impor conexões HTTPS, bloquear endereços IP específicos e gerenciar a autenticação.
Como configurar o NGINX como um proxy reverso
A configuração do NGINX como um proxy reverso envolve a configuração do NGINX para ouvir solicitações HTTP ou HTTPS de entrada e encaminhá-las para um ou mais servidores de back-end. Aqui está um guia passo a passo para começar:
Etapa 1: instalar o NGINX
Se você ainda não instalou o NGINX em seu servidor, comece instalando-o. Para a maioria das distribuições Linux, você pode usar o seguinte comando:
# Para Debian/Ubuntu
sudo apt update
sudo apt install nginx
# Para CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
Depois de instalado, inicie o serviço NGINX:
sudo systemctl start nginx
Etapa 2: Configuração básica do proxy reverso do NGINX
Para configurar um proxy reverso básico, você precisa editar o arquivo de configuração do NGINX, normalmente localizado em /etc/nginx/nginx.conf ou criar um novo arquivo de configuração em /etc/nginx/conf.d/. Abaixo está uma configuração simples para solicitações de proxy reverso para um servidor backend:
server {
listen 80;
nome_do_servidor exemplo.com;
location / {
proxy_pass http://backend_server;
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;
}
}
- listen 80;: Diz ao NGINX para escutar solicitações HTTP na porta 80.
- server_name: Substitua example.com por seu domínio ou endereço IP.
- proxy_pass: Especifica o endereço do servidor backend para o qual as solicitações devem ser encaminhadas.
- proxy_set_header: Define cabeçalhos adicionais a serem passados para o backend, o que pode ser útil para registro em log e segurança.
Etapa 3: proxy reverso para vários servidores de back-end
Para configurar o balanceamento de carga entre vários servidores de backend, você pode definir um bloco upstream:
backend upstream {
server backend1.example.com;
servidor backend2.example.com;
server backend3.example.com;
}
servidor {
listen 80;
nome_do_servidor exemplo.com;
localização / {
proxy_pass http://backend;
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;
}
}
Essa configuração distribui as solicitações entre backend1.example.com, backend2.example.com e backend3.example.com de forma round-robin.
Etapa 4: habilitar SSL para conexões seguras
Para proteger a comunicação entre os clientes e o proxy reverso do NGINX, você pode ativar o SSL/TLS. Você precisará de um certificado SSL, que pode ser obtido de provedores como o Let’s Encrypt:
server {
listen 443 ssl;
nome_do_servidor exemplo.com;
ssl_certificate /path/to/ssl_certificate.crt;
ssl_certificate_key /path/to/ssl_certificate_key.key;
localização / {
proxy_pass http://backend_server;
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;
}
}
Certifique-se de substituir os caminhos para seu certificado e chave SSL. Com essa configuração, o NGINX encerrará a conexão SSL e encaminhará o tráfego para o servidor backend por HTTP.
Etapa 5: teste e reinicialização do NGINX
Depois de fazer alterações na configuração do NGINX, é importante testar a configuração para verificar se há erros de sintaxe:
sudo nginx -t
Se nenhum erro for relatado, reinicie o NGINX para aplicar as alterações:
sudo systemctl restart nginx
Configuração avançada de proxy reverso do NGINX
Para configurações mais avançadas, você pode configurar o armazenamento em cache, a reescrita de URL e algoritmos personalizados de balanceamento de carga. Aqui estão algumas opções adicionais:
- Cache: para ativar o cache, adicione as diretivas proxy_cache em seu bloco de localização.
- Balanceamento de carga personalizado: Use diferentes estratégias de balanceamento de carga, como least_conn, para distribuir o tráfego para o servidor de back-end com o menor número de conexões ativas.
- Verificações de integridade: Configure verificações de integridade para garantir que o NGINX encaminhe o tráfego somente para servidores de backend íntegros usando proxy_next_upstream.
Conclusão
Usar o NGINX como proxy reverso é uma maneira poderosa de gerenciar o tráfego e melhorar a escalabilidade, o desempenho e a segurança de seus aplicativos da Web. Ao configurar o NGINX para lidar com solicitações e distribuí-las entre servidores de back-end, você pode obter uma infraestrutura altamente disponível e eficiente. Quer esteja hospedando um site pequeno ou um aplicativo de grande escala, o NGINX com recursos de proxy reverso pode ser um componente essencial da sua arquitetura.
Com este guia, você deve estar bem equipado para configurar e otimizar o NGINX como um proxy reverso para suas necessidades.