Come reindirizzare un dominio e i suoi sottodomini usando Nginx?

Pubblicato 8 settembre 2024

Problema: Reindirizzare Domini e Sottodomini con Nginx

Reindirizzare un dominio e i suoi sottodomini può essere complicato, specialmente quando si usa Nginx come server web. Questo processo implica la configurazione per inviare tutto il traffico dal dominio originale e i suoi sottodomini alla destinazione desiderata.

Soluzione: Configurare Nginx per il Reindirizzamento del Dominio

Impostare il Blocco Server di Nginx

Per reindirizzare un dominio e i suoi sottodomini usando Nginx, è necessario creare un blocco server nel file di configurazione di Nginx. Questo blocco definirà le regole per gestire le richieste al tuo dominio.

Apri il file di configurazione di Nginx e aggiungi un nuovo blocco server:

server {
    # La configurazione andrà qui
}

Definisci la direttiva server_name per specificare quale dominio e sottodomini questo blocco dovrebbe gestire. Nginx permette di abbinare sia il dominio principale che tutti i sottodomini usando un prefisso con il punto:

server {
    server_name .miodominio.esempio;
    # Seguiranno altre configurazioni
}

Questa impostazione di server_name corrisponderà a "miodominio.esempio" e a qualsiasi sottodominio di "miodominio.esempio".

Implementare la Regola di Reindirizzamento

Ora puoi aggiungere la regola di reindirizzamento. Nginx offre modi per implementare i reindirizzamenti, ma un metodo comune è l'uso della direttiva rewrite.

Aggiungi questa riga all'interno del tuo blocco server:

server {
    server_name .miodominio.esempio;
    rewrite ^ http://www.undominiodiverso.esempio$request_uri? permanent;
}

Questa regola rewrite fa quanto segue:

  • Il simbolo ^ corrisponde all'inizio dell'URI.
  • http://www.undominiodiverso.esempio è il dominio di destinazione per il reindirizzamento.
  • $request_uri cattura l'URI originale della richiesta e lo aggiunge al nuovo dominio.
  • Il ? alla fine rimuove eventuali stringhe di query dalla richiesta originale.
  • Il flag permanent crea un reindirizzamento 301 (permanente).

Questa configurazione reindirizzerà tutte le richieste a "miodominio.esempio" o a qualsiasi suo sottodominio verso "www.undominiodiverso.esempio", mantenendo il percorso originale e rimuovendo eventuali stringhe di query.

Configurando Nginx in questo modo, crei un sistema di reindirizzamento che gestisce sia il tuo dominio principale che tutti i suoi sottodomini.

Suggerimento: Testare la Configurazione di Nginx

Dopo aver apportato modifiche alla configurazione di Nginx, è importante testarla prima di ricaricare il server. Puoi usare il seguente comando per verificare errori di sintassi:

nginx -t

Se il test ha successo, puoi quindi ricaricare Nginx per applicare le modifiche:

nginx -s reload

Metodi Alternativi per il Reindirizzamento Nginx

Usare la Direttiva Return

Per le versioni di Nginx 0.9.1 e successive, puoi usare la direttiva return per creare una regola di reindirizzamento più semplice. Questo metodo è chiaro ed efficiente.

Per implementarlo, modifica il tuo blocco server come segue:

server {
    server_name .miodominio.esempio;
    return 301 http://www.undominiodiverso.esempio$request_uri;
}

Questa configurazione fa lo stesso del metodo rewrite, ma con una sintassi più breve. Il codice di stato 301 indica un reindirizzamento permanente, e $request_uri mantiene il percorso originale nel nuovo URL.

Suggerimento: Usa HTTPS per Reindirizzamenti Sicuri

Quando imposti i reindirizzamenti, è una buona pratica usare HTTPS invece di HTTP per l'URL di destinazione. Questo migliora la sicurezza e aiuta a mantenere la crittografia SSL/TLS. Ecco un esempio:

server {
    server_name .miodominio.esempio;
    return 301 https://www.undominiodiverso.esempio$request_uri;
}

Gestione dei Sottodomini con Caratteri Jolly

Per gestire tutti i sottodomini, inclusi quelli futuri, puoi usare pattern con caratteri jolly nella tua direttiva server_name. Questo metodo permette di gestire nuovi sottodomini senza modificare la configurazione.

Ecco come impostarlo:

server {
    server_name miodominio.esempio *.miodominio.esempio;
    return 301 http://www.undominiodiverso.esempio$request_uri;
}

Questa configurazione cattura sia il dominio principale che qualsiasi sottodominio, reindirizzandoli tutti al dominio di destinazione. Il carattere jolly (*) corrisponde a qualsiasi prefisso di sottodominio, permettendo flessibilità nella tua configurazione di reindirizzamento.