web-dev-qa-db-ja.com

SSLを使用してNginxを古いドメインから新しいドメインにリダイレクトする

サイトのドメイン名をhttps://www.myolddomain.se/からhttps://www.mynewdomain.se/に変更しようとしています

問題は、私の古いドメインの場合、すべてのページでSSLを強制しているため、googleおよび他のサイトのすべてのリンクがhttpsにリンクされていることです。 httpsリンクから古いドメインにアクセスしようとすると、証明書エラーが発生します。だから私の質問は、httpsにリンクされているすべてのページを、このエラーが発生することなく、nginxの別のhttpsで保護されたドメインにリダイレクトするにはどうすればよいですか?

私はいくつかの調査を行ったところ、Webページをリダイレクトするためのこのソリューションを見つけました。これは現在、私の構成ファイルに挿入されています。それでも証明書エラーが表示されます!

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

しかし、私はそれを機能させることができません!誰かが答えを思い付くことができれば私は非常に感謝します

10
user246341

ソリューションは、クライアントの機能、予算、およびアーキテクチャの特性に依存します。

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アドレスを持つことができる場合

最も一般的なソリューションは、2つの異なる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

}
10
Xavier Lucas