将 NGINX HTTPS 域重定向到新的 HTTPS 域

将 NGINX HTTPS 域重定向到新的 HTTPS 域

在使用 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.comhttps://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;
}

相关内容