Impostazione dei reindirizzamenti con Nginx su un VPS

Quando si gestisce un sito web o un’applicazione sul proprio VPS, i reindirizzamenti sono essenziali per controllare il flusso di traffico tra gli URL. Che si tratti di passare all’HTTPS, di reindirizzare un vecchio dominio o di ripulire i link non funzionanti, Nginx rende facile ed efficiente la gestione dei reindirizzamenti a livello di server web.

In questa guida, vedremo come configurare diversi tipi di reindirizzamento in Nginx, tra cui:

  • Reindirizzamenti permanenti (301)

  • Reindirizzamenti temporanei (302)

  • Da HTTP a HTTPS

  • Da non www a www (e viceversa)

  • Riscritture specifiche del percorso

Prerequisiti

  • Un VPS con Nginx installato

  • Accesso root o sudo

  • Il file di configurazione del proprio sito (tipicamente in /etc/nginx/sites-available/ o /etc/nginx/conf.d/)

1. Reindirizzamento permanente (301)

Da usare quando un URL o un dominio è cambiato in modo permanente.

esempio: Reindirizzamento dal vecchio dominio al nuovo dominio

server {
listen 80;
server_name olddomain.com www.olddomain.com;
return 301 https://newdomain.com$request_uri;
}

🔐 Suggerimento: Reindirizzare sempre a HTTPS quando possibile.

2. Reindirizzamento temporaneo (302)

Da utilizzare per un reindirizzamento temporaneo (ad esempio, durante la manutenzione).

server {
listen 80;
server_name olddomain.com www.olddomain.com;
return 301 https://newdomain.com$request_uri;
}

3. Reindirizzare HTTP a HTTPS

Questa operazione è altamente raccomandata per la SEO e la sicurezza.

server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}

Quindi configurare il blocco del server HTTPS separatamente:

server {
listen 443 ssl;
server_name example.com;
# SSL config here
}

4. Reindirizzamento da www a non-www (o inverso)

Scegliere una versione preferita per coerenza e SEO.

Da www a non-www:

server {
listen 80;
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}

Oppure da non-www a www:

server {
listen 80;
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
}

5. Reindirizzare un percorso specifico

Esempio: Reindirizza /blog a /articoli:

location = /blog {
return 301 /articoli;
}

Oppure con l’URL completo:

location = /blog {
return 301 https://example.com/articles;
}

Dove posizionare queste direttive

Tutte le direttive di cui sopra devono essere inserite nel blocco server appropriato all’interno del file di configurazione del sito:

/etc/nginx/sites-available/example.com

Quindi collegarlo in symlink a sites-enabled, se necessario:

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Dopo l’aggiornamento delle configurazioni

Testare sempre la configurazione di Nginx prima di ricaricarla:

sudo nginx -t

Se non ci sono errori:

sudo systemctl reload nginx

Bonus: reindirizzare tutti gli errori 404 alla home page

error_page 404 =301 /;

Posizionare questo blocco all’interno del proprio server per gestire i collegamenti interrotti con garbo.

Nginx non è solo un server web ad alte prestazioni: è anche un potente strumento per controllare il traffico e l’esperienza dell’utente attraverso reindirizzamenti intelligenti. Con poche righe di configurazione, è possibile imporre l’HTTPS, guidare gli utenti verso gli URL giusti e ottimizzare il sito per la SEO e la sicurezza.