Przekierowanie Nginx ze starej domeny do nowej za pomocą ssl

10

Próbuję zmienić nazwę domeny dla mojej witryny z https://www.myolddomain.se/nahttps://www.mynewdomain.se/

Problem polega na tym, że w mojej starej domenie wymusiłem SSL na wszystkich stronach, a zatem wszystkie linki w Google i innych witrynach są połączone z https. Kiedy próbuję odwiedzić starą domenę z linku https, pojawia się błąd certyfikatu. Więc moje pytanie brzmi: w jaki sposób mogę przekierować wszystkie strony powiązane z https do innej zabezpieczonej domeny https w Nginx, nie otrzymując tego błędu?

Przeprowadziłem badania i znalazłem to rozwiązanie do przekierowywania stron internetowych, które jest teraz wstawione do mojego pliku konfiguracyjnego. Mimo to nadal pojawia się błąd certyfikatu!

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

Ale po prostu nie mogę go uruchomić! Gdyby ktoś mógł znaleźć odpowiedź, byłbym bardzo wdzięczny

użytkownik246341
źródło

Odpowiedzi:

11

Rozwiązanie zależy od możliwości klienta, Twojego budżetu i specyfiki architektury.

1. Jeśli obie domeny są hostowane pod tym samym adresem IP i nie możesz mieć innej:

Jeśli klient obsługuje rozszerzenie TLS SNI:

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

}

Jeśli nie, ale rozumie rozszerzenie x509 SubjectAltNamei możesz sobie pozwolić na wygenerowanie nowego certyfikatu, poproś o unikalny certyfikat dla obu domen. Konfiguracja powinna wyglądać następująco:

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. Jeśli każda domena ma inny adres IP lub jeśli jest na tym samym, ale możesz mieć inny

Najbardziej ogólne rozwiązanie, nasłuchuj na dwóch różnych adresach IP (zwykle dodatkowy publiczny adres IP to „po prostu” opcja zakupu u usługodawcy hostingowego):

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
źródło
1
Dziękuję bardzo! Ta odpowiedź działała dla mnie idealnie i nie mogłem życzyć sobie bardziej dokładnej. Jestem bardzo wdzięczny, dzięki!
user246341