Como Redirecionar URLs no NGINX
O NGINX é um servidor web e proxy reverso de alto desempenho, conhecido pela sua capacidade de lidar com grandes volumes de tráfego e servir conteúdo estático de forma eficiente. Uma das suas funcionalidades poderosas é a capacidade de redirecionar URLs, algo essencial para gerenciar o tráfego web, melhorar o SEO e garantir uma experiência de usuário fluida. A seguir, mostramos como redirecionar URLs no NGINX usando o terminal de linha de comando em sistemas Linux ou Unix-like.
Redirecionar URLs no NGINX
O NGINX oferece duas diretivas principais para configurar redirecionamentos de URL: return
e rewrite
. Essas diretivas são cruciais para direcionar o tráfego web de uma URL para outra.
Redirecionamentos 301 no NGINX
O redirecionamento 301 é essencial para redirecionamentos permanentes. É comumente usado quando um site ou página foi movido permanentemente para uma nova URL. Para configurar um redirecionamento 301 no NGINX, utilize a diretiva return
dentro do seu bloco server
, especificando um código de status 301.
Exemplo de Redirecionamento 301:
Se você precisa redirecionar o tráfego de antigosite.com
para novosite.com
, a configuração do NGINX seria:
server {
listen 80;
server_name antigosite.com;
location / {
return 301 $scheme://www.novosite.com$request_uri;
}
}
Esta configuração redireciona todo o tráfego de antigosite.com
para www.novosite.com
, mantendo o URI original da solicitação.
Redirecionamentos 302 no NGINX
Ao contrário do redirecionamento permanente, um redirecionamento 302 é usado para redirecionamentos temporários. Por exemplo, você pode redirecionar temporariamente os usuários durante a manutenção do site.
Exemplo de Redirecionamento 302:
Para redirecionar temporariamente o tráfego de temporario.com
para outro-site.com
, a configuração seria:
server {
listen 80;
server_name temporario.com;
location / {
return 302 $scheme://www.outro-site.com$request_uri;
}
}
Nesta configuração, todo o tráfego para temporario.com
é redirecionado temporariamente para www.outro-site.com
.
Diretiva rewrite
para Redirecionar URLs no NGINX
A diretiva rewrite
no NGINX é uma ferramenta poderosa para lidar com cenários complexos de redirecionamento de URL. Ao contrário da diretiva return
, rewrite
utiliza expressões regulares e uma gama mais ampla de variáveis.
Redirecionamento Baseado na Extensão de Arquivo:
Redirecionando tipos específicos de arquivos. Por exemplo, redirecionar todas as solicitações de imagens .jpg
para um novo diretório:
server {
listen 80;
server_name www.exemplo.com;
location ~* \.jpg$ {
rewrite ^/imagens/(.*)\.jpg$ /novas-imagens/$1.jpg permanent;
}
}
Redirecionamento Dinâmico Baseado em URI:
Redirecionando URLs com base em seus componentes de URI. Por exemplo, redirecionar usuários com base em categorias de produtos:
server {
listen 80;
server_name www.exemplo.com;
location ~* ^/categoria/(.*)$ {
rewrite ^/categoria/(.*)$ /nova-categoria/$1 permanent;
}
}
Gerenciando Estruturas de URL Legadas:
Redirecionando URLs antigas para um novo padrão. Por exemplo:
server {
listen 80;
server_name www.exemplo.com;
location ~* ^/estrutura-antiga/(.*)$ {
rewrite ^/estrutura-antiga/(.*)/info$ /nova-estrutura/$1/detalhes permanent;
}
}
Redirecionamento Baseado em Localização Geográfica:
Utilizando a variável $geoip_country_code
para redirecionar visitantes de acordo com o país:
server {
listen 80;
server_name www.exemplo.com;
if ($geoip_country_code = "BR") {
rewrite ^/(.*)$ /br/$1 permanent;
}
}
Esta configuração redireciona visitantes do Brasil para uma seção específica do site.
Balanceamento de Carga e Redirecionamento no NGINX
O NGINX é excelente em gerenciar tráfego de rede através de suas capacidades de balanceamento de carga e redirecionamento.
Configuração Básica de Balanceamento de Carga:
Distribuindo tráfego entre vários servidores:
http {
upstream backend {
server backend1.exemplo.com;
server backend2.exemplo.com;
server backend3.exemplo.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
Balanceamento de Carga com Verificações de Saúde:
Para melhorar a confiabilidade, configure o NGINX para realizar verificações de saúde nos servidores backend:
http {
upstream backend {
server backend1.exemplo.com;
server backend2.exemplo.com;
server backend3.exemplo.com;
# Habilitar verificações de saúde
health_check;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
Persistência de Sessão (Sessões Fixas):
Para garantir que um usuário seja sempre direcionado para o mesmo servidor backend:
http {
upstream backend {
ip_hash;
server backend1.exemplo.com;
server backend2.exemplo.com;
server backend3.exemplo.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
Configuração de Terminação SSL:
Para comunicações seguras, é uma prática recomendada terminar o SSL no balanceador de carga:
http {
upstream backend {
server backend1.exemplo.com;
server backend2.exemplo.com;
server backend3.exemplo.com;
}
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
location / {
proxy_pass http://backend;
}
}
}
Conclusão
Neste guia, exploramos como usar o NGINX para redirecionamentos de URL, balanceamento de carga e muito mais. Abordamos técnicas de redirecionamento 301 e 302, regras de reescrita complexas e configurações de balanceamento de carga. O poder do NGINX está na sua flexibilidade e desempenho, tornando-o uma ferramenta essencial para gerenciar qualquer site. À medida que você aplica esses conceitos, continue experimentando e otimizando. O NGINX é uma ferramenta robusta no seu arsenal de administração web, então utilize-o para manter seu site funcionando de forma suave e eficiente.