Назад | Перейти на главную страницу

Nginx перенаправляет со старого домена на новый с помощью ssl

Я пытаюсь изменить доменное имя для своего сайта с https://www.myolddomain.se/ к https://www.mynewdomain.se/

Проблема в том, что для моего старого домена я принудительно использовал SSL на всех страницах, и поэтому все ссылки в Google и других сайтах связаны с https. Когда я пытаюсь перейти на старый домен по ссылке https, я получаю сообщение об ошибке сертификата. Итак, мой вопрос: как я могу перенаправить все страницы, связанные с https, на другой защищенный домен https в nginx, не получая этой ошибки?

Я провел небольшое исследование и нашел это решение для перенаправления веб-страниц, которое теперь вставлено в мой файл конфигурации. Хотя я все равно получаю ошибку сертификата!

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

Но я просто не могу заставить его работать! Если бы кто-нибудь мог найти ответ, буду очень признателен

Решение зависит от возможностей клиента, вашего бюджета и особенностей архитектуры.

1. Если оба домена размещены на одном IP-адресе и у вас не может быть другого:

Если клиент поддерживает расширение 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

}

Если нет, но понимает расширение x509 SubjectAltName и вы можете позволить себе создать новый сертификат, а затем запросить уникальный сертификат для обоих доменов. Конфигурация должна выглядеть так:

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. Если каждый домен находится на отдельном IP-адресе или на одном и том же, но у вас может быть другой

Самое общее решение, прослушивание двух разных IP-адресов (обычно дополнительный общедоступный IP-адрес - это «просто» вариант, который можно приобрести у вашего хостинг-провайдера):

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

}