Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Linux Servidores Virtuais

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 a reestruturar o seu website, a migrar para um novo domínio ou a encaminhar temporariamente o tráfego durante a manutenção, os redirecionamentos adequadamente configurados protegem as suas classificações de SEO, preservam a equidade de ligações e garantem que os visitantes sempre chegam à 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 orienta-o através de tudo o que precisa de saber sobre a configuração de redirecionamentos HTTP usando Nginx num ambiente de VPS Hosting, desde a compreensão dos tipos de redirecionamento até ao teste e verificação da sua configuração em produção.

1. Compreender 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 da web ou rastreador) a navegar para uma URL diferente da originalmente solicitada. O servidor comunica essa instrução usando um código de status HTTP 3xx, e o código específico que você escolhe tem implicações significativas tanto para a experiência do usuário quanto para o comportamento do mecanismo de pesquisa.

Os Tipos de Redirecionamento Mais Comuns

Tipo de RedirecionamentoCódigo de StatusCaso de UsoTransfere Autoridade de Link?
Redirecionamento Permanente301Recurso 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 pesquisa 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 permanentemente URLs, 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 pesquisa 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ária 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 enviar 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ário.

Redirecionamento Permanente 308

O redirecionamento 308 é a contrapartida permanente do 307 — ele sinaliza uma mudança 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: Acedendo ao seu VPS via SSH

Para configurar redirecionamentos Nginx, precisa de acesso à linha de comandos do seu servidor. Se está a executar um ambiente VPS Hosting baseado em Linux, isto significa conectar via SSH.

Passo 1: Abra o seu Terminal e Conecte

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

ssh username@your_server_ip

Substitua username pelo seu utilizador de sistema real (por exemplo, root ou um utilizador 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

Deverá ver uma saída indicando que o serviço está ativo (em execução). Se Nginx ainda não está instalado, 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 Ficheiros de Configuração Nginx

Nginx utiliza uma estrutura de configuração hierárquica. Compreender onde os ficheiros se encontram é essencial antes de fazer qualquer alteração.

Caminhos de Configuração Padrão

CaminhoFinalidade
/etc/nginx/nginx.confFicheiro de configuração principal do Nginx
/etc/nginx/sites-available/Configurações de anfitrião virtual disponíveis
/etc/nginx/sites-enabled/Configurações ativas com ligações simbólicas
/etc/nginx/conf.d/Ficheiros de configuração adicionais (estilo CentOS/RHEL)

Em sistemas Ubuntu/Debian, a abordagem recomendada é criar ficheiros de configuração individuais em /etc/nginx/sites-available/ e depois ativá-los criando ligações simbólicas em /etc/nginx/sites-enabled/.

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

Abrindo um Ficheiro de Configuração

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

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

Se o ficheiro ainda não existir, este comando irá criá-lo. Também pode utilizar vim ou qualquer outro editor de texto que prefira.

4. Configurar Redirecionamentos em Nginx

Nginx trata 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 e URL especificados ao cliente. É a abordagem mais eficiente para redirecionamentos diretos.

Configurar 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 motores de busca atualizarão seus índices para refletir a nova URL e transferirão a equidade de links adequadamente.

Configurar 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 visitantes de /promo-page para /temporary-landing sem afetar os sinais de SEO na URL original.

Redirecionar um Domínio Inteiro (Sem WWW para WWW)

Um caso de uso muito comum é impor um domínio canônico — por exemplo, redirecionar todo o tráfego de 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, portanto http://example.com/blog/post-1?ref=newsletter redireciona corretamente para https://www.example.com/blog/post-1?ref=newsletter.

Redirecionar 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. Depois de ter 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.

Redirecionar 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;
}

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

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 do 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
    
    Redirecionar URLs com um Padrão
    Suponha que está a reestruturar seu blog e precisa 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 trata toda a reestruturação de URL do blog, capturando o slug do post e inserindo-o no novo padrão de URL.
    Redirecionar Múltiplas URLs Específicas
    Para um pequeno número de alterações de URL específicas, usar múltiplas diretivas return em blocos location separados é mais limpo e mais eficiente:
    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 em Nginx.
    Método 3: Redirecionar 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, podem causar comportamento inesperado em configurações complexas. A comunidade Nginx frequentemente se refere a isto como o problema “if is evil”. Use com cuidado e teste completamente.
    5. Cenários de Redirecionamento Avançado
    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 o seu CMS ou aplicação requer barras finais:
    server {
        listen 80;
        server_name example.com;
    
        location ~ ^(/[^.]*[^/])$ {
            return 301 $1/;
        }
    }
    Redirecionamentos Baseados em Geolocalização Usando GeoIP
    Para websites que servem múltiplas regiões, pode redirecionar utilizadores com base na 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 colocar todo o seu site offline.
    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 reportará o arquivo específico e o número da linha onde o problema foi detectado, tornando a depuração simples.
    Passo 2: Recarregar Nginx para Aplicar Alterações
    Depois que o teste de configuração passar, recarregue Nginx graciosamente (sem descartar conexões ativas):
    sudo systemctl reload nginx
    Alternativamente, para um reinício completo (que interrompe brevemente as conexões ativas):
    sudo systemctl restart nginx
    Para a maioria das alterações de redirecionamento, reload é suficiente e preferido.
    7. Verificar Que Os Seus Redirecionamentos Funcionam Corretamente
    Após aplicar a 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 o seu navegador e navegue para o URL antigo. Observe se é corretamente redirecionado para o novo destino. Para mais detalhes, abra as Ferramentas de Programador (F12), navegue para o separador Rede e recarregue a página. Verá a cadeia de redirecionamento completa, incluindo os códigos de estado devolvidos em cada passo.
    Método 2: Usar curl a partir da Linha de Comandos
    O comando curl é a forma mais fiável de testar redirecionamentos sem a interferência da cache do navegador:
    curl -I http://example.com/old-page
    A bandeira -I obtém apenas os cabeçalhos de resposta HTTP. Procure pelo cabeçalho Location e o código de estado 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
    A bandeira -L instrui curl a seguir redirecionamentos, e combinada com -I, mostra os cabeçalhos em cada passo da cadeia.
    Método 3: Ferramentas Online de Verificação de Redirecionamento
    Várias ferramentas online gratuitas podem visualizar as suas cadeias de redirecionamento e identificar problemas como loops de redirecionamento ou saltos de redirecionamento excessivos:
    
    Redirect Checker (redirect-checker.org)
    httpstatus.io
    Screaming Frog SEO Spider (aplicação de desktop, gratuita até 500 URLs)
    
    Verificar Loops de Redirecionamento
    Um loop de redirecionamento ocorre quando o URL A redireciona para o URL B, que redireciona de volta para o URL A (ou através de uma cadeia mais longa que eventualmente volta a fazer loop). Isto faz com que os navegadores apresentem um erro como *"ERR_TOO_MANY_REDIRECTS"*.
    Para detetar loops com curl:
    curl -IL --max-redirs 10 http://example.com/old-page
    Se curl atingir o limite máximo de redirecionamento, tem um loop. Reveja a sua configuração cuidadosamente para garantir que não existem 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 SEO mais comum com redirecionamentos. Se uma mudança de URL é permanente, sempre use 301. Usar 302 por acaso significa que os mecanismos de busca não transferirão a 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 SEO passado pela 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 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 Lidar com HTTP e HTTPS
    Se seu site serve tanto HTTP quanto HTTPS, certifique-se de que suas regras de redirecionamento levem em conta 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 resolução de problemas.
    9. Redirecionamentos Nginx vs. Redirecionamentos .htaccess
    Se está a migrar de um ambiente de hospedagem baseado em Apache para Nginx num VPS, pode estar habituado a gerir redirecionamentos através de ficheiros .htaccess. É importante compreender que Nginx não suporta ficheiros .htaccess. Toda a lógica de redirecionamento deve ser colocada diretamente nos ficheiros de configuração do bloco de servidor Nginx.
    Isto é na verdade uma vantagem: Nginx não precisa de ler ficheiros .htaccess em cada pedido, o que contribui para o seu desempenho superior em comparação com Apache em muitos cenários.
    Se preferir uma experiência de painel de controlo gerido para o seu VPS, a AlexHost oferece VPS com cPanel e uma variedade de Painéis de Controlo VPS que fornecem interfaces gráficas para gerir redirecionamentos e outras configurações de servidor sem editar ficheiros de configuração diretamente.
    10. Melhores Práticas de SEO para Redirecionamentos Nginx
    Os redirecionamentos configurados corretamente são um componente crítico do SEO técnico. Aqui estão os princípios-chave a seguir:
    Use Redirecionamentos 301 para Alterações Permanentes
    Sempre que alterar permanentemente um URL — seja renomeando uma página, reestruturando a arquitetura do seu site ou migrando domínios — use um redirecionamento 301. Isso garante que o Google e outros motores de busca atualizem seus índices e transfiram o poder de classificação do URL antigo para o novo.
    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 do URL antigo para o destino final.
    Atualize Links Internos
    Os redirecionamentos são uma rede de segurança, não um substituto para vinculação interna limpa. Após implementar redirecionamentos, atualize seus links internos para apontar diretamente para os novos URLs. Isso reduz a carga do servidor e garante que os rastreadores gastem seu orçamento em conteúdo em vez de seguir redirecionamentos.
    Envie um Mapa do Site Atualizado
    Após alterações significativas de URL, atualize seu mapa do site XML para refletir os novos URLs e reenvie-o através do Google Search Console. Isso acelera o processo de re-indexação.
    Monitore com Google Search Console
    Após implementar redirecionamentos, monitore o Google Search Console para erros de rastreamento, problemas de cobertura e qualquer queda inesperada em impressões ou cliques. Problemas de redirecionamento geralmente aparecem dias após a implementação.
    Conclusão
    Dominar a configuração de redirecionamento do Nginx é uma habilidade essencial para qualquer administrador de sistema ou proprietário de site que execute um VPS. Seja você aplicando HTTPS, consolidando URLs duplicadas, migrando para um novo domínio ou reestruturando a arquitetura do seu site, o Nginx fornece as ferramentas para lidar com cada cenário de forma eficiente e confiável.
    Os principais pontos deste guia:
    
    Escolha o tipo de redirecionamento correto: 301 para movimentações permanentes (críticas para SEO), 302/307 para movimentações temporárias
    Use a diretiva return para redirecionamentos simples — é mais rápido e limpo que rewrite
  • Use a diretiva rewrite para transformações de URL complexas baseadas em padrões
  • Sempre teste com sudo nginx -t antes de recarregar, e verifique com curl -IL depois
  • Preserve strings de consulta usando $request_uri ao redirecionar domínios ou diretórios inteiros
  • Evite cadeias de redirecionamento apontando redirecionamentos diretamente para destinos finais
  • Se você está procurando um ambiente confiável e de alto desempenho para executar seu servidor Nginx, explore os planos de VPS Hosting da AlexHost — construído para velocidade, segurança e acesso root completo para que você tenha controle total sobre a configuração do seu servidor.