Nginx-Weiterleitung von alter Domain zu neuer Domain mit SSL

10

Ich versuche, den Domainnamen für meine Site von https://www.myolddomain.se/auf zu ändernhttps://www.mynewdomain.se/

Das Problem ist, dass ich für meine alte Domain SSL auf allen Seiten erzwungen habe und daher alle Links auf Google und anderen Websites mit https verlinkt sind. Wenn ich versuche, die alte Domain über einen https-Link zu besuchen, wird ein Zertifikatfehler angezeigt. Meine Frage lautet also: Wie kann ich alle mit https verknüpften Seiten in eine andere https-gesicherte Domain in Nginx umleiten, ohne diesen Fehler zu erhalten?

Ich habe einige Nachforschungen angestellt und diese Lösung zum Umleiten von Webseiten gefunden, die jetzt in meine Konfigurationsdatei eingefügt wird. Obwohl ich immer noch den Zertifikatfehler bekomme!

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

Aber ich kann es einfach nicht zum Laufen bringen! Wenn jemand eine Antwort finden könnte, wäre ich sehr dankbar

user246341
quelle

Antworten:

10

Die Lösung hängt von den Kundenfunktionen, Ihrem Budget und den Besonderheiten der Architektur ab.

1. Wenn beide Domänen unter derselben IP-Adresse gehostet werden und Sie keine andere haben können:

Wenn der Client die TLS-SNI-Erweiterung unterstützt:

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

}

Wenn die x509-Erweiterung nicht verstanden wird SubjectAltNameund Sie es sich leisten können, ein neues Zertifikat zu erstellen, fordern Sie ein eindeutiges Zertifikat für beide Domänen an. Die Konfiguration sollte folgendermaßen aussehen:

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. Wenn sich jede Domain unter einer bestimmten IP-Adresse befindet oder wenn sie sich auf derselben befindet, Sie jedoch eine andere haben können

Die allgemeinste Lösung ist das Abhören von zwei verschiedenen IPs (normalerweise ist eine zusätzliche öffentliche IP "einfach" eine Option, die Sie bei Ihrem Hosting-Anbieter erwerben können):

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

}
Xavier Lucas
quelle
1
Ich danke dir sehr! Diese Antwort funktionierte perfekt für mich und ich hätte mir keine gründlichere wünschen können. Ich bin sehr dankbar, danke!
user246341