![将 NGINX HTTPS 域重定向到新的 HTTPS 域](https://linux22.com/image/713507/%E5%B0%86%20NGINX%20HTTPS%20%E5%9F%9F%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E6%96%B0%E7%9A%84%20HTTPS%20%E5%9F%9F.png)
在使用 duckduckgo 几个小时后,这是我得到的最佳答案,但它仍然无法将当前 HTTPS 域重定向到新的 HTTPS 域。
server {
listen 80;
listen 443 ssl;
server_name www.olddomain.com olddomain.com;
rewrite 301 https://newdomain.com$request_uri;
}
浏览器出现不安全连接错误。
我也尝试过类似的事情
server {
listen 443 ssl;
server_name olddomain.com;
ssl on;
ssl_certificate /etc/ssl/certs/OLD.crt;
ssl_certificate_key /etc/ssl/private/OLD.key;
#enables all versions of TLS, but not SSLv2 or 3 which are weak and now deprecated.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ALLLLLLTTHHISSSS";
ssl_prefer_server_ciphers on;
rewrite 301 https://newdomain.com$request_uri;
}
虽然此选项不再给出错误,但重写不起作用并且转到“欢迎来到 NGINX 页面”。
答案1
如果您想将 https 请求从旧域名重定向到新域名,您将需要在该 Nginx 服务器块内配置旧网站的证书。
你需要照顾https://example.com和https://www.example.com
这是一个可以完成工作的基本配置。恕我直言,您无需担心仅执行转发的服务器的 SSL 版本,只需使用默认设置即可。
server {
server_name www.example.com;
listen 443 ssl;
ssl_certificate /var/lib/acme/certs/***CERT_DIRECTORY/fullchain;
ssl_certificate_key /var/lib/acme/certs/***CERT_DIRECTORY/privkey;
return 301 https://www.example2.com$request_uri;
}
答案2
当我需要重定向整个域名时,我通常只是在域名注册商级别转发域名。以下是如何转发您的域名如果您使用的是 GoDaddy。大多数注册商都会允许您这样做。
在注册商级别设置转发的好处:
- 你不必担心服务器上的运行是否正常
- 如果你移动到新服务器,你不会意外忘记设置 Apache(或其他 Web 服务器)重定向
服务器级转发的缺点:
- 如果你只转发 80 端口而不转发 443 端口,那么控制力就会减弱
有时最简单的答案就是最好的......我第一次花了一段时间才想到这一点:)
答案3
如果您在新域名上从 http 到 https 进行了 301 重定向,则可以通过从旧域名重定向到新域名的 http 版本来避免证书问题。例如:
在旧域名上
server {
server_name old-domain.com www.old-domain.com;
return 301 http://new-domain.com/$request_uri;
}
在新域名上
server {
listen 80
server_name new-domain.com www.new-domain.com;
return 301 https://new-domain.com/$request_uri;
}