SSL을 사용하여 이전 도메인에서 새로운 도메인으로 Nginx 리디렉션


10

나는에서 내 사이트의 도메인 이름을 변경하려고 https://www.myolddomain.se/https://www.mynewdomain.se/

문제는 이전 도메인의 경우 모든 페이지에서 SSL을 강제 실행했기 때문에 Google 및 기타 사이트의 모든 링크가 https와 연결되어 있다는 것입니다. https 링크에서 이전 도메인을 방문하려고하면 인증서 오류가 발생합니다. 그래서 내 질문은 :이 오류가 발생하지 않고 https와 연결된 모든 페이지를 nginx의 다른 https 보안 도메인으로 리디렉션하는 방법은 무엇입니까?

나는 약간의 연구를하고 웹 페이지를 리디렉션하는이 솔루션을 찾았습니다.이 솔루션은 이제 구성 파일에 삽입되었습니다. 그래도 인증서 오류가 발생합니다!

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

그러나 나는 그것을 작동시킬 수 없다! 누군가 대답을 얻을 수 있다면 나는 매우 감사 할 것입니다.

답변:


11

솔루션은 클라이언트 기능, 예산 및 아키텍처 고유성에 따라 다릅니다.

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

}

1
정말 고맙습니다! 이 답변은 완벽하게 작동했으며 더 철저한 답변을 원할 수 없었습니다. 고마워, 고마워!
user246341
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.