Como Redirecionar URLs no NGINX: Guia Completo para Gerenciar Tráfego e Melhorar o SEO

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:

Nginx
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:

Nginx
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:

Nginx
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:

Nginx
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:

Nginx
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:

Nginx
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:

Nginx
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:

Nginx
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:

Nginx
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:

Nginx
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.

Artigos Relacionados