Como Usar Nginx para Fazer o Redirect de HTTP para HTTPS
Nginx — pronunciado engine-x (motor-x, numa tradução livre) — é um poderoso servidor web HTTP de código aberto e de alto desempenho. Ele pode funcionar como um proxy reverso ou como um proxy POP3/IMAP. Ele também permite que você faça o processo de “Nginx redirect HTTP to HTTPS” – redirecionamento de HTTP para HTTPS via Nginx.
Esse é o terceiro servidor web mais popular do mundo e é bastante conhecido por seu desempenho melhorado, facilidade de uso e configuração, estabilidade e utilização mínima de recursos.
É por isso que, neste tutorial, iremos mostrar para você como usar Nginx para redirecionar o tráfego de maneiras diferentes — incluindo de HTTP para HTTPS.
De acordo com o site Datanyze, o Nginx possui uma fatia de 32% no mercado de servidores web. Ele é responsável por suportar uma série de sites renomados como Github, Netflix, CloudFlare, Hulu, Airbnb, WordPress e muito outros.
Redirecionamento no Nginx
A habilidade de redirecionar a URL de um site para outro endereço ou apontá-lo com base no seu critério é um recurso essencial de um servidor web Nginx. Configurar um redirecionamento Nginx é uma tarefa fácil e simples.
Normalmente os usuários escolhem redirecionar uma página que possui um bom ranqueamento de SEO. Isso é útil, por exemplo, quando se muda de um CMS para outra plataforma. Isso irá completamente alterar a composição de sua URL.
Então, para manter sua página atual com uma boa posição na SERP (Search Engine Results Page ou Página de Resultados do Mecanismo de Pesquisa), você pode re-rotear a sua URL antiga para a nova página.
Neste tutorial, iremos guiá-lo através do processo de criar dois tipos de redirecionamento Nginx: permanente e temporário. Lembre-se de ter o Nginx instalado no seu VPS!
Dica
A VPS Hostinger tem servidores localizados no Brasil. Isso é muito mais estabilidade e desempenho para seu projeto na web.
Diferença Entre Redirecionamento Nginx Temporário e Permanente
Redirecionamentos temporários são benéficos se a localização da página precisa ser mudada temporariamente. O código de resposta 302 do redirect é usado para designar o movimento temporário de uma página.
Se a manutenção de um site está sendo executada, redirecionamentos temporários são usados para notificar os usuários que o website está indisponível. Outro exemplo acontece quando você promove redirects temporários de uma página que está incompleta. Nesse caso, você liga aquela página com outro ponto da página principal:
Visitante → Página do Website → Site está em manutenção
Por outro lado, um redirect permanente no Nginx informa ao navegador da web que ele deve vincular de maneira permanente uma página ou domínio antigo a uma nova localização ou domínio. Para mapear essa mudança, o código de resposta 301 é usado para designar o movimento da página. Esses tipos de redirects são úteis quando você quer mudar o nome de domínio e não deseja que um navegador possa acessar a versão antiga.
Por exemplo, você pode fazer o seguinte quando desejar mudar o domínio de seu website ou criar uma nova página para um site antigo:
Visitante → Clique www.idealizadores.com/home → Redirecionado para → www.idealizadores.com/home1
Redirects de Páginas no Nginx
Lembre-se, primeiro você precisa acessar seu VPS através de SSH. Se estiver tendo problemas, confira nosso tutorial sobre PuTTY.
No Nginx, a maior parte dos redirecionamentos pode ser alcançada com a ajuda de um recurso de rewrite integrado. Esse é o recurso padrão que está disponível numa instalação limpa do Nginx e que pode formar ambos os tipos de redirects Nginx — por exemplo, permanente e temporário. Em sua forma mais simples, é necessário um mínimo de dois casos. Por exemplo, uma URL antiga e uma URL nova.
É simples e fácil redirecionar páginas para uma localização permanente ou temporária no servidor web Nginx. Na localização /etc/nginx/sites-enabled/default você deve colar o seguinte código (mas não se esqueça de mudar as variáveis de acordo com suas necessidades):
Location path_pattern {
rewrite ^/oldURL$ https://www.dominio1.com/newURL redirect;
}
Se você quiser redirecionar a página para outro link de maneira permanente, simplesmente use “permanent” ao invés de “redirect” no comando acima. Enquanto isso, a variável “path_pattern” geralmente é /index.html.
Como Redirecionar um Domínio com Nginx
Para redirecionar um domínio para outro, use o seguinte comando no terminal:
server {
listen 80;
hostname devisers.in www.idealizadores.com.br;
rewrite ^ http://www.idealizadores.com$request_uri? permanent;
}
Aqui, usamos dois domínios. Aquele que queremos redirecionar — www.idealizadores.com.br — e o mais novo: www.idealizadores.com.
Como Usar Nginx para Fazer Redirect de HTTP para HTTPS (SSL)
Finalmente chegamos na aguardada parte deste tutorial: como fazer para redirecionar a versão HTTP de seu site para a edição segura e criptografada. HTTP e HTTPS usam portas diferentes — porta 80 para HTTP e porta 443 para HTTPS.
Usar HTTPS é muito mais útil, já que ele o protege de ataques MITM que podem sequestrar a sua sessão. Lembre-se: para este método funcionar, você precisa já ter configurado um SSL.
Então, para proteger todas as informações enviadas entre você e seus visitantes, é benéfico redirecionar todos os pedidos vindos do HTTP para o HTTPS. Para tanto, podemos adicionar essa modificação para o mesmo arquivo:
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
Agora, todo tráfego para o servidor padrão HTTP será redirecionado para o HTTPS!
Redirecionar Nginx para Sites Específicos
Isso é essencial se você está usando vários websites ou aplicativos é quer redirecionar apenas um único site. Siga os passos abaixo:
server {
listen 80;
server_name devisers.in;
return 301 https://idealizadores.com$request_uri;
}
Aqui, estamos redirecionando o site http://www.idealizadores.com para https://www.idealizadores.com.
Dica
A Hostinger é um site de registro de domínio com ofertas de extensões com preços a partir de R$ 2,99. Quem sabe essa seja a chance de você lançar seu projeto na internet e já sair economizando!
Como Redirecionar Endereços com www para Aqueles sem www
Existem muitas vezes em que você quer que seus visitantes acessem o nome de domínio mais simples de seu site, como idealizadores.com ao invés de www.idealizadores.com.
Apesar de existirem muitas opções para redirecionar de www para não-www usando o Nginx, vamos descrever abaixo a maneira mais fácil de fazê-lo:
server {
server_name www.devisers.in;
return 301 $scheme://devisers.in$request_uri;
}
Importante: Esse é um redirecionamento permanente ou “301 Redirect”
Reinicie o servidor web Nginx para colocar as mudanças em efeito usando o seguinte comando:
sudo systemctl restart Nginx
Se você deseja redirecionar de um endereço não-www para um do tipo www, simplesmente troque a URL mencionada no comando acima. Basta substituir www.idealizadores.com com idealizadores.com e vice-versa.
Conclusão
Nginx é um dos mais poderosos e fáceis servidores web, que permite que você faça redirecionamentos temporários e permanentes como os descritos acima.
Agora você sabe como criar redirects Nginx de HTTP para HTTPs e de www para não www e vice-versa. Garanta que você está usando os tipos corretos de redirecionamento, já que redirects incorretos vão afetar seus rankings em sites de busca
Com a ajuda de redirecionamentos precisos, você pode alavancar sua presença atual na web enquanto altera a estrutura de seu site conforme for necessário. Esperamos que este tutorial tenha sido útil para você! Nos vemos no próximo!
Comentários
August 04 2022
Olá. É possível configurar o NGinx para apontar para outro servidor? Exemplo: No meu servidor web está configurado certinho (atende num IP público), abre os sites que estão nos diretórios /var/www/html/site1, /var/www/html/site2, /var/www/html/site3... e respondem nos dominios meusite1.com, meusite2.com, meusite3.com... mas eu tenho outro servidor - que é um servidor de aplicativo, que está em outro servidor (ex: meu servidor - localmente tem o IP 10.1.1.100 e meu outro servidor tem IP 10.1.1.150 e responde na porta 3004)... é possível fazer isso?
August 16 2022
Olá, José! É possível fazer isso sim, basta fazer os apontamentos corretos na zona DNS ?
September 07 2022
Carlos, sugiro que leia o documento do Nginx. A forma sugerida é claramente não recomendada. Again, return is preferable to the equivalent rewrite, which follows. The rewrite requires interpreting a regular expression – ^(.*)$ – and creating a custom variable ($1) that in fact is equivalent to the built‑in $request_uri variable. # NOT RECOMMENDED rewrite ^(.*)$ $scheme://www.domain.com$1 permanent;
September 29 2022
Obrigado pela dica! Vou me consultar com a nossa equipe técnica e vamos atualizar o tutorial de acordo com a sugestão deles ?
November 19 2022
Excelente matéria, queria ter um site como esse com tantos recursos e dicas diferentes!
December 03 2022
Obrigado! ?