我获得了 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 提供它们的唯一方法是为旧域添加有效的证书。