Nginxredirect从旧域到新的SSL

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

问题是,我的旧域强制所有页面上的SSL,因此谷歌和其他网站上的所有链接都与https链接。 当我尝试从https链接访问旧域时,出现证书错误。 所以我的问题是:我怎样才能redirect链接到HTTPS的另一个HTTPS安全域,在Nginx,没有得到这个错误?

我做了一些研究,发现这个redirect网页的解决scheme,现在插入到我的configuration文件中。 虽然我仍然得到证书错误!

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

但是我无法完成它的工作! 如果有人能拿出答案,我将非常感激

解决scheme取决于客户端function,预算和架构特性。

1.如果两个域都托pipe在相同的IP地址上,并且不能有另一个:

如果客户端支持TLS SNI扩展:

 server { listen XXXX: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 XXXX:443 ssl; ssl_certificate /path/to/mynewdomain.cert; ssl_certificate_key /path/to/mynewdomain.key; server_name .mynewdomain.se; [ ... ] # Your stuff } 

如果它不知道x509扩展名为SubjectAltName ,那么您可以负担得起生成一个新的证书,然后为这两个域请求唯一的证书。 configuration应该如下所示:

 server { listen XXXX:443 ssl default_server; ssl_certificate /path/to/domain.cert; ssl_certificate_key /path/to/domain.key; server_name _; } server { listen XXXX:443; server_name .myolddomain.se; return 301 https://www.mynewdomain.se$request_uri; } server { listen XXXX:443; server_name .mynewdomain.se; [ ... ] # Your stuff } 

2.如果每个域名都在不同的IP地址上,或者它们在同一个地址上,但是可以有另一个IP地址

最通用的解决scheme,听两个不同的IP(通常一个额外的公共IP是“只是”在您的托pipe服务提供商购买的选项):

 server { listen XXXX: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 YYYY:443 ssl; ssl_certificate /path/to/mynewdomain.cert; ssl_certificate_key /path/to/mynewdomain.key; server_name .mynewdomain.se; [ ... ] # Your stuff }