Nginx 使用 ssl 将旧域名重定向到新域名

Nginx 使用 ssl 将旧域名重定向到新域名

我正在尝试将我的网站的域名从 更改https://www.myolddomain.se/https://www.mynewdomain.se/

问题是,对于我的旧域名,我强制所有页面都使用 SSL,因此谷歌和其他网站上的所有链接都使用 https 链接。当我尝试从 https 链接访问旧域名时,出现证书错误。所以我的问题是:如何在 nginx 中将所有使用 https 链接的页面重定向到另一个 https 安全域,而不会出现此错误?

我做了一些研究,找到了这个重定向网页的解决方案,现在已将其插入到我的配置文件中。但我仍然收到证书错误!

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

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

答案1

解决方案取决于客户能力、预算和架构特性。

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

}

相关内容