Nginx使用SSL从旧域重定向到新域


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;
}

但是我就是无法正常工作!如果有人能给出答案,我将不胜感激

Answers:


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(通常,额外的公共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 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.