Introduzione
Quando un certificato SSL è installato sul server, il sito Web non è disponibile tramite una connessione HTTPS protetta per impostazione predefinita. È necessario aggiungere "HTTPS" a un URL ogni volta che è necessario connettersi in modo sicuro. Il modo migliore per ottenere la massima sicurezza per i visitatori del sito Web è abilitare un redirect automatico da HTTP a HTTPS.
Questo tutorial vi mostrerà come reindirizzare un URL da HTTP verso HTTPS, ad esempio http://esempio.it a https://esempio.it, con Apache su Ubuntu 20.04 LTS.
Prerequisiti
In questo tutorial si presuppone che si disponga di privilegi di superuser, ovvero sudo o root, sul server che esegue Nginx. Se non lo hai già impostato, segui questo tutorial: Configurazione iniziale Ubuntu 20.04 LTS.
Si presume che Nginx sia installato. Se non è installato segui questo tutorial: Come installare Linux Nginx MySQL PHP (LEMP) in Ubuntu 20.04 LTS oppure Come installare Nginx su Ubuntu 20.04 LTS.
Per installare i certificati SSL (HTTPS) su Nginx leggere questo tutorial Come installare Let's Encrypt per Nginx su Ubuntu 20.04 LTS.
Configurare il redirect da HTTP a HTTPS
Se utilizzi i certificati SSL, quindi hai una connessone attiva con il protocollo HTTPS e vuoi effettuare un redirect da www a non-www (o viceversa) e da HTTP a HTTPS continuare a leggere.
Aprire il file di configurazione di Nginx:
sudo nano /etc/nginx/sites-available/default
Aggiungere un nuovo blocco server all'inizio del file per gestire le connessioni HTTP ed effettuare un redirect verso l'HTTPS. Modifica il parametro server_name inserendo il tuo nome dominio sia senza www che con www, modifica anche il parametro return impostando l'URL preferito, nel nostro caso la versione senza www, in questo modo:
server {
listen 80;
listen [::]:80;
server_name TUO_DOMINIO.it www.TUO_DOMINIO.it;
return 301 https://TUO_DOMINIO.it$request_uri;
}
Salvare e chiudere il file premendo CTRL+X, seguito da Y per salvare le modifiche e quindi ENTER se stai utilizzando nano.
Modificare il blocco server principale. Cambiare il parametro Listen con la porta 443 e aggiungere il parametro ssl. Includere il percorso dei propri certificati, se non sono già inclusi, e alla fine del blocco aggiungere una condizione if che imposta un redirect automatico verso l'url preferito, in queso caso senza www. Se preferisci creare un redirect da non-www a www invertire i parametri server_name e return in entrambi i blocchi server.
server {
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name TUO_DOMINIO.it www.TUO_DOMINIO.it;
location / {
try_files $uri $uri/ =404;
}
#include your certificates
...
if ($host = 'www.TUO_DOMINIO.it') {
return 301 https://TUO_DOMINIO.it$request_uri;
}
}
Quindi la configurazione finale con redirect da www a non-www con https abilitato è la seguente:
server {
listen 80;
listen [::]:80;
server_name TUO_DOMINIO.it www.TUO_DOMINIO.it;
return 301 https://TUO_DOMINIO.it$request_uri;
}
server {
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name TUO_DOMINIO.it www.TUO_DOMINIO.it;
location / {
try_files $uri $uri/ =404;
}
#include your certificates
...
if ($host = 'www.TUO_DOMINIO.it') {
return 301 https://TUO_DOMINIO.it$request_uri;
}
}
Riavviare Nginx:
sudo service nginx restart
Le modifiche dovrebbero entrare in vigore immediatamente.
Conclusione
In questo tutorial abbiamo imparato a configurare le regole di redirect per Nginx da www a non-www e viceversa, e per HTTP verso HTTP.
Questo è tutto! Il redirect di Nginx è ora configurato correttamente.