Como usar o nginx para redirecionar todo o tráfego de HTTP para HTTPS

Como usar o nginx para redirecionar todo o tráfego de HTTP para HTTPS

Se o seu site estiver hospedado com o NGINX e ele possui SSL, é uma prática recomendada desativar completamente o HTTP e forçar todo o tráfego que entra na versão HTTPS do site. Isso evita ter conteúdo duplicado e garante que todos os usuários do site estejam apenas navegando na versão segura do seu site. Você também deve ver um impulso de SEO, pois os mecanismos de pesquisa preferem páginas da web não redundantes e garantidas.

Neste guia, assumiremos que você já está usando o NGINX em um sistema Linux e queremos redirecionar todo o tráfego HTTP para HTTPS. Mesmo que um usuário siga um http: // Link, o site deve enviá -los para a página correta e segura, que acontece instantaneamente e sem a intervenção do usuário.

Existem duas maneiras de configurar este redirecionamento no nginx. Um método permite configurar o redirecionamento para sites individuais. O outro método pode redirecionar o HTTP para HTTPS para todos os sites NGINX no seu servidor, o que é útil se você tiver vários sites configurados e desejar evitar aplicar exatamente o mesmo redirecionamento a cada um. Abordaremos as instruções passo a passo para os dois métodos abaixo. Vamos começar.

OBSERVAÇÃO
Usando Apache em vez de Nginx? Escrevemos um guia separado de como usar o Apache para redirecionar todo o tráfego HTTP para HTTPS.

Neste tutorial, você aprenderá:

  • Como redirecionar http para https para sites individuais nginx
  • Como redirecionar http para https para todos os sites NGINX
Redirecionar o tráfego HTTP para HTTPS no Nginx Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Qualquer distro Linux
Programas Nginx
Outro Acesso privilegiado ao seu sistema Linux como raiz ou através do sudo comando.
Convenções # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Redirecionar http para https para sites individuais



Precisamos fazer alterações no arquivo de configuração do servidor nginx para redirecionar o tráfego. Abra -o com seu editor de texto preferido.

$ sudo nano/etc/nginx/sites-averable/your_conf_file 

Deve haver pelo menos dois blocos neste arquivo - um que controla a configuração das conexões HTTP (porta 80) e uma que controla o HTTPS (porta 443). Sob a parte HTTP, insira o seguinte código de redirecionamento 301. Obviamente, substitua o domínio de exemplo pelo domínio do seu site.

servidor ouça 80; Exemplo server_name.com www.exemplo.com; Retornar 301 https: // Exemplo.com $ request_uri;  

Como você pode ver, o código escuta na porta 80 para conexões de entrada para exemplo.com e www.exemplo.com. Então redireciona essas conexões para o mesmo URL, mas com https: //.

Abaixo do bloco HTTP, você precisará de um bloco HTTPS se ainda não fez um.

servidor ouça 80; Exemplo server_name.com www.exemplo.com; Retornar 301 https: // Exemplo.com $ request_uri;  servidor Ouça 443 SSL; Exemplo server_name.com; Exemplo SSL_Certificate.com.CRT; Exemplo SSL_Certificate_Key.com.chave; # Outra configuração 

Mas e as conexões com https: // www.exemplo.com (Observe o www.)? Para redirecionar essas conexões também, precisaremos de outro bloco com um redirecionamento 301. Na íntegra, o arquivo de configuração ficaria assim (embora o seu possa ter configuração adicional):

servidor  # redirecionar todos os http para https out 80; Exemplo server_name.com www.exemplo.com; Retornar 301 https: // Exemplo.com $ request_uri;  servidor  # redirecionar https www. Ouça 443 SSL; Server_name www.exemplo.com; Retornar 301 https: // Exemplo.com $ request_uri;  servidor Ouça 443 SSL; Exemplo server_name.com; Exemplo SSL_Certificate.com.CRT; Exemplo SSL_Certificate_Key.com.chave; # Outra configuração 


Certifique -se de usar um comando systemctl para reiniciar ou recarregar o nginx para que essas novas alterações entrem em vigor.

$ sudo systemctl recarregar nginx 

Seu site agora deve sempre redirecionar para um URL com o formato de https: // Exemplo.com, Independentemente do link ser precedido por http: // e/ou www..

Redirecionar http para https para todos os sites

Para redirecionar o tráfego para todos os seus sites hospedados no NGINX, insira o seguinte código em seu arquivo de configuração:

servidor Ouça 80 default_server; Ouça [::]: 80 default_server; nome do servidor _; retornar 301 https: // $ host $ request_uri;  

Isso é praticamente o mesmo que o código acima, exceto que usa variável $ host Portanto, pode ser aplicado a qualquer URL que Nginx esteja hospedando. Esse método pode ser um pouco mais conveniente, mas você perderá parte do controle granular que você tem quando cada site tiver seus próprios blocos de servidor. Use sua própria discrição e escolha o método que você quiser.

Conclusão

Na grande maioria dos casos, não há razão para continuar usando o HTTP quando seu site pode oferecer https. É mais seguro, dá tranqüilidade ao usuário, e o site terá um pouco de impulso de SEO. Neste artigo, vimos como foi fácil redirecionar todo o tráfego para HTTPS e se livrar inteiramente do HTTP. Qualquer um desses métodos é viável para forçar o tráfego HTTP a HTTPS em seu (s) site (s).

Tutoriais do Linux relacionados:

  • Ubuntu 20.04: WordPress com instalação nginx
  • Coisas para instalar no Ubuntu 20.04
  • Introdução aos mecanismos de armazenamento MySQL
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Ubuntu 20.04 WordPress com instalação do Apache
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Mastering Bash Script Loops
  • Coisas para instalar no Ubuntu 22.04
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Ubuntu 20.04 Guia