Nginx chuyển hướng từ tên miền cũ sang mới với ssl


10

Tôi cố gắng để thay đổi tên miền cho trang web của tôi từ https://www.myolddomain.se/đếnhttps://www.mynewdomain.se/

Vấn đề là đối với tên miền cũ của tôi, tôi đã buộc SSL trên tất cả các trang và do đó tất cả các liên kết trên google và các trang web khác được liên kết với https. Khi tôi cố gắng truy cập tên miền cũ từ một liên kết https, tôi gặp lỗi chứng chỉ. Vì vậy, câu hỏi của tôi là: làm cách nào tôi có thể chuyển hướng tất cả các trang được liên kết với https sang một tên miền được bảo mật https khác, bằng nginx, mà không gặp phải lỗi này?

Tôi đã thực hiện một số nghiên cứu và tìm thấy giải pháp này để chuyển hướng các trang web, hiện được chèn vào tập tin cấu hình của tôi. Mặc dù tôi vẫn nhận được lỗi chứng chỉ!

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

Nhưng tôi không thể làm cho nó hoạt động được! Nếu ai có thể đưa ra câu trả lời tôi sẽ rất biết ơn

Câu trả lời:


11

Giải pháp phụ thuộc vào khả năng của khách hàng, ngân sách và đặc thù kiến ​​trúc của bạn.

1. Nếu cả hai tên miền được lưu trữ trên cùng một địa chỉ IP và bạn không thể có một tên miền khác:

Nếu khách hàng hỗ trợ tiện ích mở rộng 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

}

Nếu nó không hiểu phần mở rộng x509 SubjectAltNamevà bạn có thể đủ khả năng để tạo chứng chỉ mới thì hãy yêu cầu chứng chỉ duy nhất cho cả hai miền. Cấu hình sẽ giống như:

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. Nếu mỗi tên miền nằm trên một địa chỉ IP riêng biệt hoặc nếu nó giống nhau nhưng bạn có thể có một tên miền khác

Giải pháp chung nhất, lắng nghe hai IP khác nhau (thường là một IP công cộng bổ sung là "đơn giản" một tùy chọn để mua tại nhà cung cấp dịch vụ lưu trữ của bạn):

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
Cảm ơn bạn rất nhiều! Câu trả lời này hoạt động hoàn hảo với tôi, và tôi không thể mong muốn một câu hỏi thấu đáo hơn. Tôi rất biết ơn, cảm ơn!
user246341
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.