Frage Nginx Redirect von alten Domain zu neuen mit ssl


Ich versuche, den Domain-Namen für meine Site zu ändern https://www.myolddomain.se/ zu https://www.mynewdomain.se/

Das Problem ist, dass ich für meine alte Domain SSL auf allen Seiten erzwinge und daher alle Links auf Google und anderen Seiten mit https verlinkt sind. Wenn ich versuche, die alte Domain von einem https-Link aus zu besuchen, erhalte ich einen Zertifikatfehler. Meine Frage ist also: Wie kann ich alle Seiten, die mit https verlinkt sind, auf eine andere https-geschützte Domain in nginx umleiten, ohne diesen Fehler zu bekommen?

Ich habe einige Nachforschungen angestellt und diese Lösung für das Umleiten von Webseiten gefunden, die nun in meine Konfigurationsdatei eingefügt wird. Obwohl ich immer noch den Zertifikatfehler erhalte!

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

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


5
2017-10-02 20:25


Ursprung




Antworten:


Die Lösung hängt von den Client-Funktionen, Ihren Budget- und Architekturspezifikationen ab.

1. Wenn beide Domains auf 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 es nicht aber die Erweiterung x509 versteht SubjectAltName und Sie können es sich leisten, ein neues Zertifikat zu generieren und dann nach einem eindeutigen Zertifikat für beide Domains zu fragen. Die Konfiguration sollte wie folgt 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 Domäne auf einer bestimmten IP-Adresse befindet oder wenn sie sich auf derselben befindet, Sie jedoch eine andere haben können

Die allgemeinste Lösung, hören Sie auf zwei verschiedene IPs (normalerweise ist eine zusätzliche öffentliche IP "einfach" eine Option, die Sie bei Ihrem Hosting-Provider kaufen 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

}

6
2017-10-02 20:46



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