15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
01.11.2024

Configurando Redirecionamentos com Nginx em VPS: Um Guia Completo de Configuração

Os redirecionamentos são um componente fundamental de qualquer infraestrutura web bem gerenciada. Quer esteja reestruturando seu site, migrando para um novo domínio ou encaminhando temporariamente o tráfego durante a manutenção, os redirecionamentos adequadamente configurados protegem suas classificações de SEO, preservam a autoridade de links e garantem que os visitantes sempre cheguem na página correta. Nginx — um dos servidores web mais poderosos e amplamente utilizados do mundo — torna a implementação de redirecionamentos flexível e eficiente.

Este guia abrangente o orienta através de tudo o que você precisa saber sobre como configurar redirecionamentos HTTP usando Nginx em um ambiente VPS Hosting, desde a compreensão dos tipos de redirecionamento até o teste e verificação de sua configuração em produção.

1. Compreendendo Redirecionamentos HTTP

Antes de tocar em um único arquivo de configuração, é importante entender o que os redirecionamentos realmente fazem e por que escolher o tipo correto é importante — especialmente para SEO.

Um redirecionamento HTTP é uma resposta do servidor que instrui o cliente (normalmente um navegador web ou rastreador) a navegar para uma URL diferente da solicitada originalmente. O servidor comunica essa instrução usando um código de status HTTP 3xx, e o código específico que você escolher tem implicações significativas tanto para a experiência do usuário quanto para o comportamento do mecanismo de busca.

Os Tipos de Redirecionamento Mais Comuns

Tipo de RedirecionamentoCódigo de StatusCaso de UsoPassa Autoridade de Link?
Redirecionamento Permanente301Recurso foi movido permanentemente✅ Sim
Redirecionamento Temporário302Recurso temporariamente indisponível❌ Não
Redirecionamento Temporário (Método Seguro)307Movimento temporário, preserva método HTTP❌ Não
Redirecionamento Permanente (Método Seguro)308Movimento permanente, preserva método HTTP✅ Sim

#### Redirecionamento Permanente 301

O redirecionamento 301 é o tipo de redirecionamento mais crítico para SEO. Ele sinaliza aos mecanismos de busca que um recurso foi movido permanentemente para uma nova URL, transferindo a autoridade de link acumulada da página original (também chamada de “link juice”) para o destino. Use isso ao renomear URLs permanentemente, consolidar conteúdo duplicado ou migrar para um novo domínio.

#### Redirecionamento Temporário 302

Um redirecionamento 302 informa aos navegadores e rastreadores que a mudança é temporária e a URL original será eventualmente restaurada. Como os mecanismos de busca interpretam isso como transitório, eles não transferem autoridade de link para a URL de destino. Use isso para testes A/B, páginas de manutenção temporárias ou redirecionamentos promocionais de curto prazo.

#### Redirecionamento Temporário 307

O redirecionamento 307 se comporta de forma semelhante a um 302, mas com uma diferença crítica: ele explicitamente preserva o método de solicitação HTTP original. Se um cliente envia uma solicitação POST para uma URL que retorna um 307, o cliente deve repetir o POST para a nova URL em vez de usar como padrão um GET. Isso é importante para endpoints de API e envios de formulários.

#### Redirecionamento Permanente 308

O redirecionamento 308 é a contrapartida permanente do 307 — ele sinaliza um movimento permanente enquanto também preserva o método de solicitação HTTP. É menos comumente usado que 301, mas valioso em ambientes com muitas APIs.

2. Pré-requisitos: Acessando seu VPS via SSH

Para configurar redirecionamentos Nginx, você precisa de acesso à linha de comando do seu servidor. Se você está executando um ambiente VPS Hosting baseado em Linux, isso significa conectar via SSH.

Passo 1: Abra seu Terminal e Conecte

No Linux ou macOS, abra seu terminal. No Windows, use um cliente como PuTTY ou o Windows Terminal integrado com suporte a OpenSSH.

ssh username@your_server_ip

Substitua username pelo seu usuário do sistema real (por exemplo, root ou um usuário com permissões sudo) e your_server_ip pelo endereço IP público do seu VPS.

Exemplo:

ssh admin@203.0.113.45

Uma vez conectado, confirme que Nginx está instalado e em execução:

sudo systemctl status nginx

Você deve ver uma saída indicando que o serviço está ativo (em execução). Se Nginx ainda não está instalado, você pode instalá-lo com:

# On Ubuntu/Debian
sudo apt update && sudo apt install nginx -y

# On CentOS/RHEL/AlmaLinux
sudo dnf install nginx -y

3. Localizando e Compreendendo Arquivos de Configuração Nginx

Nginx usa uma estrutura de configuração hierárquica. Entender onde os arquivos estão localizados é essencial antes de fazer qualquer alteração.

Caminhos de Configuração Padrão

CaminhoPropósito
/etc/nginx/nginx.confArquivo de configuração principal do Nginx
/etc/nginx/sites-available/Configurações de host virtual disponíveis
/etc/nginx/sites-enabled/Configurações ativas com links simbólicos
/etc/nginx/conf.d/Arquivos de configuração adicionais (estilo CentOS/RHEL)

Em sistemas Ubuntu/Debian, a abordagem recomendada é criar arquivos de configuração individuais em /etc/nginx/sites-available/ e depois habilitá-los criando links simbólicos em /etc/nginx/sites-enabled/.

Em sistemas CentOS/RHEL/AlmaLinux, as configurações normalmente ficam em /etc/nginx/conf.d/.

Abrindo um Arquivo de Configuração

Para editar a configuração de um domínio específico:

sudo nano /etc/nginx/sites-available/example.com

Se o arquivo ainda não existir, este comando o criará. Você também pode usar vim ou qualquer outro editor de texto que preferir.

4. Configurando Redirecionamentos no Nginx

Nginx manipula redirecionamentos principalmente através de duas diretivas: return e rewrite. A diretiva return é mais simples, mais rápida e recomendada para a maioria dos cenários de redirecionamento. A diretiva rewrite oferece mais poder para redirecionamentos complexos baseados em padrões.

Método 1: Usando a Diretiva return (Recomendado)

A diretiva return interrompe o processamento e retorna imediatamente o código de status HTTP especificado e a URL para o cliente. É a abordagem mais eficiente para redirecionamentos diretos.

#### Configurando um Redirecionamento Permanente 301 (URL Única)

server {
    listen 80;
    server_name example.com www.example.com;

    location /old-page {
        return 301 https://example.com/new-page;
    }
}

Nesta configuração, qualquer solicitação para http://example.com/old-page será permanentemente redirecionada para https://example.com/new-page. Os mecanismos de busca atualizarão seus índices para refletir a nova URL e transferirão a autoridade de link adequadamente.

#### Configurando um Redirecionamento Temporário 302

server {
    listen 80;
    server_name example.com;

    # Temporary redirect during maintenance
    location /promo-page {
        return 302 https://example.com/temporary-landing;
    }
}

Esta configuração redireciona temporariamente os visitantes de /promo-page para /temporary-landing sem afetar os sinais de SEO na URL original.

#### Redirecionando um Domínio Inteiro (Sem WWW para WWW)

Um caso de uso muito comum é forçar um domínio canônico — por exemplo, redirecionar todo o tráfego http://example.com para https://www.example.com:

server {
    listen 80;
    server_name example.com;
    return 301 https://www.example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name www.example.com;

    # SSL configuration here
    # ...
}

A variável $request_uri preserva o caminho original e a string de consulta, então http://example.com/blog/post-1?ref=newsletter corretamente redireciona para https://www.example.com/blog/post-1?ref=newsletter.

#### Redirecionando HTTP para HTTPS (Aplicação de SSL)

Aplicar HTTPS é uma prática recomendada de segurança e um sinal de classificação confirmado pelo Google. Uma vez que você tenha um Certificado SSL instalado no seu servidor, configure o redirecionamento da seguinte forma:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # Your site configuration continues here
    root /var/www/example.com/html;
    index index.html index.php;
}

Esta configuração captura todo o tráfego HTTP na porta 80 e emite um redirecionamento 301 para o equivalente HTTPS, garantindo que todos os visitantes e rastreadores usem a versão segura do seu site.

#### Redirecionando um Domínio Antigo Inteiro para um Novo Domínio

Ao migrar seu site para um domínio completamente novo, use o seguinte padrão:

server {
    listen 80;
    listen 443 ssl;
    server_name old-domain.com www.old-domain.com;

    ssl_certificate /etc/letsencrypt/live/old-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/old-domain.com/privkey.pem;

    return 301 https://new-domain.com$request_uri;
}

Isso preserva o caminho completo da URL durante a migração de domínio, o que é crítico para manter suas classificações de SEO. Se você precisar registrar um novo domínio para seu projeto, a AlexHost oferece serviços acessíveis de Registro de Domínio.

Método 2: Usando a Diretiva rewrite (Redirecionamentos Baseados em Padrões)

A diretiva rewrite usa expressões regulares para corresponder e transformar URLs. É mais poderosa, mas também mais intensiva em recursos que return. Use-a quando precisar redirecionar múltiplos padrões de URL com uma única regra.

#### Sintaxe Básica de rewrite

rewrite regex replacement [flag];

Sinalizadores:

  • last — Interrompe o processamento de diretivas rewrite atuais e inicia uma nova busca de localização
  • break — Interrompe o processamento de diretivas de reescrita no bloco atual
  • redirect — Retorna um redirecionamento temporário 302
  • permanent — Retorna um redirecionamento permanente 301

#### Redirecionando URLs com um Padrão

Suponha que você esteja reestruturando seu blog e precise redirecionar todas as URLs de /blog/YYYY/MM/post-slug para /articles/post-slug:

server {
    listen 80;
    server_name example.com;

    rewrite ^/blog/[0-9]{4}/[0-9]{2}/(.*)$ /articles/$1 permanent;
}

Esta única regra manipula toda a reestruturação de URL do blog, capturando o slug do post e inserindo-o no novo padrão de URL.

#### Redirecionando Múltiplas URLs Específicas

Para um pequeno número de mudanças de URL específicas, usar múltiplas diretivas return em blocos location separados é mais limpo e performático:

server {
    listen 80;
    server_name example.com;

    location = /about-us {
        return 301 /about;
    }

    location = /services/web-design {
        return 301 /services/web-development;
    }

    location = /contact-form {
        return 301 /contact;
    }
}

O modificador = em location realiza uma correspondência exata, que é o tipo de correspondência mais rápido no Nginx.

Método 3: Redirecionando com Base em Strings de Consulta

Nginx não corresponde nativamente a strings de consulta em blocos location, mas você pode usar a variável $arg_ ou diretivas if para redirecionamentos baseados em strings de consulta:

server {
    listen 80;
    server_name example.com;

    location /page {
        if ($arg_id = "123") {
            return 301 /new-page-123;
        }
        if ($arg_id = "456") {
            return 301 /new-page-456;
        }
    }
}

> Nota: Embora diretivas if funcionem para casos simples, elas podem causar comportamento inesperado em configurações complexas. A comunidade Nginx frequentemente se refere a isso como o problema “if is evil”. Use com cuidado e teste completamente.

5. Cenários Avançados de Redirecionamento

Redirecionando um Subdiretório para Outro Domínio

server {
    listen 80;
    server_name example.com;

    location /shop/ {
        return 301 https://shop.example.com$request_uri;
    }
}

Removendo Barras Finais

Barras finais inconsistentes podem criar problemas de conteúdo duplicado. Para canonicalizar URLs removendo barras finais:

server {
    listen 80;
    server_name example.com;

    rewrite ^/(.*)/$ /$1 permanent;
}

Adicionando Barras Finais a URLs de Diretório

Inversamente, se seu CMS ou aplicação requer barras finais:

server {
    listen 80;
    server_name example.com;

    location ~ ^(/[^.]*[^/])$ {
        return 301 $1/;
    }
}

Redirecionamentos Baseados em Geo Usando GeoIP

Para sites que servem múltiplas regiões, você pode redirecionar usuários com base em sua localização geográfica usando o ngx_http_geoip_module:

geoip_country /usr/share/GeoIP/GeoIP.dat;

server {
    listen 80;
    server_name example.com;

    if ($geoip_country_code = "DE") {
        return 302 https://de.example.com$request_uri;
    }

    if ($geoip_country_code = "FR") {
        return 302 https://fr.example.com$request_uri;
    }
}

6. Testando sua Configuração Nginx

Nunca aplique alterações a um servidor de produção sem testar primeiro. Um erro de sintaxe na sua configuração Nginx pode derrubar seu site inteiro.

Passo 1: Validar a Sintaxe da Configuração

sudo nginx -t

Saída esperada para uma configuração válida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Se você ver erros, Nginx relatará o arquivo específico e o número da linha onde o problema foi detectado, tornando a depuração direta.

Passo 2: Recarregar Nginx para Aplicar Alterações

Uma vez que o teste de configuração passa, recarregue Nginx graciosamente (sem descartar conexões ativas):

sudo systemctl reload nginx

Alternativamente, para um reinício completo (que brevemente interrompe conexões ativas):

sudo systemctl restart nginx

Para a maioria das mudanças de redirecionamento, reload é suficiente e preferível.

7. Verificando que seus Redirecionamentos Funcionam Corretamente

Após aplicar sua configuração, verifique que os redirecionamentos se comportam exatamente como pretendido antes de considerar a tarefa concluída.

Método 1: Teste no Navegador

Abra seu navegador e navegue para a URL antiga. Observe se você é corretamente redirecionado para o novo destino. Para mais detalhes, abra Ferramentas do Desenvolvedor (F12), navegue para a aba Rede e recarregue a página. Você verá a cadeia de redirecionamento completa, incluindo os códigos de status retornados em cada etapa.

Método 2: Usando curl da Linha de Comando

O comando curl é a forma mais confiável de testar redirecionamentos sem o cache do navegador interferindo:

curl -I http://example.com/old-page

O sinalizador -I busca apenas os cabeçalhos de resposta HTTP. Procure pelo cabeçalho Location e o código de status na resposta:

HTTP/1.1 301 Moved Permanently
Server: nginx/1.24.0
Date: Mon, 01 Jan 2024 12:00:00 GMT
Content-Type: text/html
Location: https://example.com/new-page
Connection: keep-alive

Para seguir a cadeia de redirecionamento completa automaticamente:

curl -IL http://example.com/old-page

O sinalizador -L instrui curl a seguir redirecionamentos, e combinado com -I, mostra os cabeçalhos em cada etapa da cadeia.

Método 3: Ferramentas Online de Verificação de Redirecionamento

Várias ferramentas online gratuitas podem visualizar suas cadeias de redirecionamento e identificar problemas como loops de redirecionamento ou saltos excessivos de redirecionamento:

  • Redirect Checker (redirect-checker.org)
  • httpstatus.io
  • Screaming Frog SEO Spider (aplicação desktop, gratuita até 500 URLs)

Verificando Loops de Redirecionamento

Um loop de redirecionamento ocorre quando a URL A redireciona para a URL B, que redireciona de volta para a URL A (ou através de uma cadeia mais longa que eventualmente volta). Isso faz com que os navegadores exibam um erro como *”ERR_TOO_MANY_REDIRECTS”*.

Para detectar loops com curl:

curl -IL --max-redirs 10 http://example.com/old-page

Se curl atingir o limite máximo de redirecionamento, você tem um loop. Revise sua configuração cuidadosamente para garantir que não existam caminhos de redirecionamento circulares.

8. Erros Comuns de Redirecionamento e Como Evitá-los

Erro 1: Usar 302 Quando Você Quer Dizer 301

Este é o erro de SEO mais comum com redirecionamentos. Se uma mudança de URL é permanente, sempre use 301. Usar 302 por acidente significa que os mecanismos de busca não transferirão autoridade de link e continuarão indexando a URL antiga.

Erro 2: Cadeias de Redirecionamento

Evite encadear redirecionamentos desnecessariamente (por exemplo, A → B → C → D). Cada salto adicional adiciona latência e dilui o valor de SEO passado através da cadeia. Audite seus redirecionamentos regularmente e atualize-os para apontar diretamente para o destino final.

Erro 3: Não Preservar Strings de Consulta

Ao redirecionar domínios ou diretórios inteiros, sempre inclua $request_uri ou $query_string no seu alvo de redirecionamento para evitar remover parâmetros de URL importantes.

Incorreto:

return 301 https://new-domain.com;

Correto:

return 301 https://new-domain.com$request_uri;

Erro 4: Esquecer de Manipular HTTP e HTTPS

Se seu site serve HTTP e HTTPS, certifique-se de que suas regras de redirecionamento contabilizam ambos os protocolos, ou você pode acabar com comportamento inconsistente.

Erro 5: Não Testar Após Alterações

Sempre execute sudo nginx -t antes de recarregar, e sempre verifique redirecionamentos com curl após aplicar alterações. Alguns segundos de teste podem evitar horas de solução de problemas.

9. Redirecionamentos Nginx vs. Redirecionamentos .htaccess

Se você está migrando de um ambiente de hospedagem baseado em Apache para Nginx em um VPS, você pode estar acostumado a gerenciar redirecionamentos via arquivos .htaccess. É importante entender que Nginx não suporta arquivos .htaccess. Toda a lógica de redirecionamento deve ser colocada diretamente em arquivos de configuração de bloco de servidor Nginx.

Isso é na verdade uma vantagem: Nginx não precisa ler arquivos .htaccess em cada solicitação, o que contribui para seu desempenho superior em comparação com Apache em muitos cenários.

Se você preferir uma experiência de painel de controle gerenciado para seu VPS, a AlexHost oferece VPS com cPanel e uma gama de Painéis de Controle VPS que fornecem interfaces gráficas para gerenciar redirecionamentos e outras configurações de servidor sem editar arquivos de configuração diretamente.

10. Melhores Práticas de SEO para Redirecionamentos Nginx

Redirecionamentos adequadamente configurados são um componente crítico de SEO técnico. Aqui estão os princípios-chave a seguir:

Use Redirecionamentos 301 para Mudanças Permanentes

Sempre que você muda permanentemente uma URL — seja renomeando uma página, reestruturando a arquitetura do seu site ou migrando domínios — use um redirecionamento 301. Isso garante que Google e outros mecanismos de busca atualizem seus índices e transfiram o poder de classificação da URL antiga para a nova.

Minimize Saltos de Redirecionamento

Os rastreadores do Google seguem cadeias de redirecionamento, mas cada salto consome orçamento de rastreamento e dilui ligeiramente o PageRank. Mantenha suas cadeias de redirecionamento o mais curtas possível — idealmente um único salto da URL antiga para o destino final.

Atualize Links

15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar