Reindirizzamento di Nginx dal vecchio dominio al nuovo con ssl


10

Sto cercando di cambiare il nome di dominio per il mio sito da https://www.myolddomain.se/ahttps://www.mynewdomain.se/

Il problema è che per il mio vecchio dominio ho forzato SSL su tutte le pagine e quindi tutti i collegamenti su google e altri siti sono collegati con https. Quando provo a visitare il vecchio dominio da un collegamento https ricevo un errore di certificato. Quindi la mia domanda è: come posso reindirizzare tutte le pagine collegate con HTTPS a un altro dominio protetto HTTPS, in nginx, senza ottenere questo errore?

Ho fatto qualche ricerca e ho trovato questa soluzione per reindirizzare le pagine Web, che ora è inserita nel mio file di configurazione. Anche se continuo a ricevere l'errore del certificato!

server {
        server_name .myolddomain.se;
        return 301 https://www.mynewdomain.se$request_uri;
}

Ma non riesco proprio a farlo funzionare! Se qualcuno potesse trovare una risposta, sarei molto grato

Risposte:


11

La soluzione dipende dalle capacità del cliente, dal budget e dalle specificità dell'architettura.

1. Se entrambi i domini sono ospitati sullo stesso indirizzo IP e non puoi averne un altro:

Se il client supporta l'estensione SNS TLS:

server {
    listen X.X.X.X:443 ssl;
    ssl_certificate /path/to/myolddomain.cert;
    ssl_certificate_key /path/to/myolddomain.key;
    server_name .myolddomain.se;
    return 301 https://www.mynewdomain.se$request_uri;
}


server {
    listen X.X.X.X:443 ssl;
    ssl_certificate /path/to/mynewdomain.cert;
    ssl_certificate_key /path/to/mynewdomain.key;
    server_name .mynewdomain.se;

    [ ... ] # Your stuff

}

In caso contrario, capisce l'estensione x509 SubjectAltNamee puoi permetterti di generare un nuovo certificato, quindi richiedi un certificato univoco per entrambi i domini. La configurazione dovrebbe apparire come:

server {
    listen X.X.X.X:443 ssl default_server;
    ssl_certificate /path/to/domain.cert;
    ssl_certificate_key /path/to/domain.key;
    server_name _;
}

server {
    listen X.X.X.X:443;
    server_name .myolddomain.se;
    return 301 https://www.mynewdomain.se$request_uri;
}


server {
    listen X.X.X.X:443;
    server_name .mynewdomain.se;

    [ ... ] # Your stuff

}

2. Se ciascun dominio si trova su un indirizzo IP distinto o se si trova sullo stesso ma è possibile averne un altro

La soluzione più generica, ascolta su due IP diversi (di solito un IP pubblico aggiuntivo è "semplicemente" un'opzione per l'acquisto presso il tuo provider di hosting):

server {
    listen X.X.X.X:443 ssl;
    ssl_certificate /path/to/myolddomain.cert;
    ssl_certificate_key /path/to/myolddomain.key;
    server_name .myolddomain.se;
    return 301 https://www.mynewdomain.se$request_uri;
}

server {
    listen Y.Y.Y.Y:443 ssl;
    ssl_certificate /path/to/mynewdomain.cert;
    ssl_certificate_key /path/to/mynewdomain.key;
    server_name .mynewdomain.se;

    [ ... ] # Your stuff

}

1
Grazie mille! Questa risposta ha funzionato perfettamente per me e non avrei potuto desiderarne una più approfondita. Ti sono molto grato, grazie!
user246341,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.