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 80Server_name _;
:corrisponderà a qualsiasi nome hostReturn 301
:indica al browser (e ai motori di ricerca) che si tratta di un reindirizzamento permanentehttps://$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.