Nginx 监听 443 以重定向没有 SSL 证书的域名

Nginx 监听 443 以重定向没有 SSL 证书的域名

我获得了 newdomain.org.il 的 SSL 证书

但我收到的一些请求(图片)来自https://olddomain.org.il

(因为客户端有无方案链接,所以没问题)

我可以轻松重定向非 https 请求:

server {
     listen      80;

     server_name  www.olddomain.org.il olddomain.org.il;
     return 301 https://newdomain.org.il$request_uri;
}

但这无法捕获来自旧域名的 https 请求

但如果我为 olddomain 添加一个 listen 子句

server {
     listen      80;
     listen      443 ssl;

     server_name  www.olddomain.org.il olddomain.org.il;
     return 301 https://newdomain.org.il$request_uri;
 }

由于主机名与证书域不匹配,请求将收到 sslError。

在 nginx 中有什么解决方法吗?(我知道我可以解决这个问题,并为旧域名提供另一个 SSL 证书,或者通过代码更改来防止那些旧版 URL 存在,但由于这是一个从旧版应用程序迁移的过程,我真的不想这样做。

答案1

简短的回答是,不是。

HTTPS 的重点是确保连接的安全性,您需要拥有证书才能加载 NGINX,并且该证书必须有效,浏览器才能接受从中加载的资源。将资源保留在旧域上并通过 HTTPS 提供它们的唯一方法是为旧域添加有效的证书。

相关内容