Le moderne tendenze di Internet impongono l'uso del protocollo di comunicazione sicuro https. Pertanto, durante la migrazione è importante che tutto il traffico che arriva alla porta http venga automaticamente reindirizzato su https. Questa è una condizione importante non solo per i siti che potrebbero perdere traffico, ma anche per gli utenti, in modo che nessuno possa interrompere una connessione non protetta. Vediamo quindi come configurare il reindirizzamento da http a https di Nginx.
Si consiglia di utilizzare un reindirizzamento con codice di stato 301, che indica ai motori di ricerca o al browser che il link corrente è stato aggiornato e deve essere aggiornato nel suo database, ad esempio nei segnalibri del browser. Se apriamo il file di configurazione, possiamo trovare due sezioni server, per il sito https e per il sito http. Nella sezione http si reindirizzano semplicemente tutte le richieste a https utilizzando l'istruzione return, mentre nella seconda sezione si elabora tutto. Ad esempio, la prima sezione:
server {
server_name losst.ru www.losst.ru;
charset off;
index index.php;
ssi on;
return 301 https://$host:443$request_uri;
set $root_path /var/www/losst/data/www/losst.ru;
root $root_path;
listen :80 default_server;
...
}
La seconda sezione segue le richieste sulla porta 433:
server {
server_name losst.ru www.losst.ru;
ssl on;
ssl_certificate "/var/www/losst/losst.ru_le2.crtca";
ssl_certificate_key "/var/www/losst/losst.ru_le2.key";
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
add_header Strict-Transport-Security "max-age=31536000;";
charset off;
index index.php;
set $root_path /var/www/losst/data/www/losst.ru;
root $root_path;
listen :443 default_server;
...
}
Come si può notare, la sintassi in questo caso è molto semplice e chiara. L'istruzione return ci permette di restituire i codici di risposta del server necessari. In questo modo restituiamo il codice 301, il reindirizzamento permanente e l'URL a cui reindirizzare l'utente. Oltre alla direttiva return, è possibile utilizzare l'istruzione rewrite, che esegue esattamente le stesse azioni:
rewrite ^/(.*)$ https://losst.com/$1 permanent;
Nella sintassi delle espressioni regolari, si può aggiungere il dominio al posto del ritorno 301. È anche possibile utilizzare una costruzione di questo tipo senza un blocco server separato:
if ($host ~* ^(losst.ru|www.losst.ru)$ ){
rewrite ^/(.*)$ https://losst.ru/$1 permanent;
}
Successivamente, è necessario salvare il file e verificare la configurazione di Nginx. A tale scopo si utilizza:
$ sudo nginx -t
Se tutto è a posto, riavviare Nginx:
$ sudo systemctl restart nginx
Verificare che tipo di risposta del server si ottiene con curl:
$ curl -I losst.ru
Oppure lasciare che l'utilità segua il percorso completo di reindirizzamento:
$ curl ILa losst.ru
Come si può vedere, la configurazione di un reindirizzamento a nginx https è abbastanza semplice, il lavoro viene svolto aggiungendo una riga al file di configurazione, il resto sono tutti parametri aggiuntivi.