GNU/Linux >> Linux Esercitazione >  >> Linux

Come reindirizzare da HTTP a HTTPS in Nginx

Introduzione

Nginx (pronunciato "Engine-X") è un server Web basato su Linux e un'applicazione proxy. Nginx è un potente strumento per reindirizzare e gestire il traffico web. Può essere facilmente configurato per reindirizzare il traffico Web HTTP non crittografato a un server HTTPS crittografato.

Questa guida ti mostrerà come reindirizzare da HTTP a HTTPS utilizzando Nginx.

Prerequisiti

  • Un server Linux che esegue Nginx
  • Un account utente con sudo privilegi
  • Accesso remoto a un server web (opzionale, richiesto solo se non stai lavorando direttamente sul tuo server web)
  • Accesso a un terminale/riga di comando (Ctrl-Alt-T o Ctrl-Alt-F2)

Reindirizzamento da HTTP a HTTPS

Per imporre un reindirizzamento da HTTP a HTTPS, devi modificare il file di configurazione Nginx.

Nella maggior parte dei casi, puoi individuare il file in /etc/nginx/sites-available directory. Se non lo trovi, cercalo qui:/etc/nginx/nginx.conf, /usr/local/nginx/conf o /usr/local/etc/nginx .

Una volta individuato il file di configurazione di Nginx, aprilo in un editor di testo con il comando:

sudo nano /etc/nginx/sites-available/server.conf

Sostituisci la posizione con la posizione e il nome effettivi del file di configurazione.

Una volta che il file di configurazione è aperto per la modifica, inserisci uno dei blocchi di codice di seguito. Al termine della modifica, salva il file ed esci. Quindi, riavvia il servizio Nginx con il seguente comando:

sudo service nginx restart

Nginx Reindirizza tutto il traffico HTTP su HTTPS

Apri il file di configurazione di Nginx per la modifica, quindi inserisci il seguente codice:

server {

    listen 80 default_server;


    server_name _;


    return 301 https://$host$request_uri;

}

Ecco una ripartizione dei comandi:

  • Listen 80 :indica al sistema di catturare tutto il traffico HTTP sulla porta 80
  • Server_name _; :corrisponderà a qualsiasi nome host
  • Return 301 :indica al browser (e ai motori di ricerca) che si tratta di un reindirizzamento permanente
  • https://$host$request_uri :questo è un codice breve per specificare la versione HTTPS di qualsiasi cosa l'utente abbia digitato

Dopo la modifica, tutto il traffico per il server HTTP predefinito viene reindirizzato a HTTPS.

Reindirizzare un sito specifico

Potresti avere più server, ma solo alcuni di essi potrebbero richiedere HTTPS. Specificare il nome del server nel blocco server per reindirizzare il traffico selezionato:

server {

    listen 80 default_server;


    server_name my_app.com;


    return 301 https://my_app.com$request_uri;

}

Sostituisci il nome mia_app.com con il nome del server che intendi reindirizzare. Potresti anche voler aggiungere altri siti aggiungendo un altro blocco di server. Copia semplicemente il codice e cambia il nome del server.

Accetta solo connessioni SSL

Aggiungi questo codice per essere sicuro che il server accetterà solo connessioni SSL sulla porta 443:

server {

    listen 443 ssl default_server;

    server_name my_app.com;

}


server {

    listen 443 ssl;

    server_name my_website.com;

}

Questo blocco di codice imposterà due siti Web, my_app.com e il mio_sito_web.com , per accettare solo connessioni SSL. Puoi aggiungere ulteriori siti utilizzando blocchi server aggiuntivi.

Reindirizzamenti pagina Nginx

Puoi utilizzare il codice di riscrittura per gestire rapidamente un reindirizzamento 301 (permanente) o 302 (temporaneo):

Location /index.html {

       rewrite ^/oldURL$ https://www.your_domain.com/newURL redirect;

}

La maggior parte delle volte, la posizione sarà index.html , ma puoi specificare qualsiasi percorso/modello.

Tieni presente che la rewrite il comando deve essere utilizzato solo con reindirizzamenti 301 o 302.

Come reindirizzare un dominio con Nginx

Questo è utile se sei passato da un'estensione vanity (come .biz o .net) a un indirizzo .com standard. Può anche essere utilizzato per reindirizzare da un vecchio nome di dominio a un nuovo nome di dominio.

server {

    listen 80;

    listen 443 ssl;

    server_name www.old_company.com;

    return 301 $scheme://www.new_company.com$request_uri;

}

Nella maggior parte dei casi, il return comando è preferito al comando di riscrittura.

Reindirizzamento da un sito Web www a un sito Web non www

Questo processo è simile a un reindirizzamento di pagina standard:

server {

    server_name www.new_company.com;

    return 301 $scheme://new_company.com$request_uri;

}

Motivi per reindirizzare il traffico

Esistono diversi motivi per reindirizzare il traffico HTTP su HTTPS. Potrebbe essere necessario:

  • Forza una connessione più sicura e crittografata.
  • Mantieni una pagina con un buon posizionamento SEO, ma invia il suo traffico a una nuova pagina.
  • Avvisa e invia temporaneamente il traffico a una pagina "in manutenzione".
  • Invia permanentemente il traffico da un sito Web all'altro, ad esempio dopo una fusione aziendale.

Linux
  1. Come utilizzare Nginx per reindirizzare

  2. Come installare HTTP Git Server con Nginx su Ubuntu 20.04

  3. Come installare HTTP Git Server con Nginx su Debian 11

  4. Reindirizzamento da HTTP a HTTPS in NginX

  5. Come reindirizzare automaticamente HTTP a HTTPS sui server Apache?

Come installare Nginx in Debian 7

Come installare Nginx su Fedora 22

Come installare NGINX su Ubuntu 20.04

Come installare Nginx su CentOS 7

Come configurare NGINX su un server CentOS 7

Come configurare Nginx come loadbalancer per Apache o Tomcat per HTTP/HTTPS