首页主机资讯如何在Ubuntu上迁移Nginx SSL

如何在Ubuntu上迁移Nginx SSL

时间2025-12-03 11:25:04发布访客分类主机资讯浏览881
导读:在 Ubuntu 上迁移 Nginx SSL 的完整步骤 一、准备与评估 明确迁移范围:是同一台机器的目录/用户变更,还是跨机器/跨环境迁移。 梳理证书类型与文件: Let’s Encrypt:通常为 /etc/letsencrypt/...

在 Ubuntu 上迁移 Nginx SSL 的完整步骤

一、准备与评估

  • 明确迁移范围:是同一台机器的目录/用户变更,还是跨机器/跨环境迁移。
  • 梳理证书类型与文件:
    • Let’s Encrypt:通常为 /etc/letsencrypt/live/yourdomain.com/ 下的 fullchain.pemprivkey.pem(不要把整个 live 目录直接复制,应按文件复制)。
    • 其他 CA/自签名:常见为 .crt/.pem 证书与 .key 私钥,建议统一放到 /etc/nginx/ssl/
  • 检查 Nginx 是否支持 SSL:执行 nginx -V,确认编译参数中包含 –with-http_ssl_module;若缺失,需要安装带 SSL 模块的版本或重新编译。
  • 规划目标路径与权限:证书与私钥建议放在 /etc/nginx/ssl/,权限设置为仅 root:root 600(私钥必须严格限制)。

二、备份与迁移证书

  • 备份源服务器证书与私钥(示例):
    • 单域名文件复制:
      • sudo cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem /path/to/backup/
      • sudo cp /etc/letsencrypt/live/yourdomain.com/privkey.pem /path/to/backup/
    • 打包备份:
      • sudo tar -czvf nginx_ssl_backup.tar.gz /etc/nginx/ssl/
    • 远程同步(跨机迁移推荐):
      • rsync -avz -e ssh /etc/letsencrypt/live/yourdomain.com/ user@newhost:/etc/letsencrypt/live/yourdomain.com/
  • 迁移到新机器后,确保目录与权限正确:
    • sudo mkdir -p /etc/letsencrypt/live/yourdomain.com
    • sudo chown -R root:root /etc/letsencrypt/live/yourdomain.com
    • sudo chmod 600 /etc/letsencrypt/live/yourdomain.com/privkey.pem
  • 注意:迁移 Let’s Encrypt 时,证书与私钥可按文件复制;若使用 Certbot 管理的续期,在新机器上建议用 Certbot 重新注册/续期或迁移续期配置,避免续期失败。

三、在新机器部署与更新 Nginx 配置

  • 放置证书:将 fullchain.pem/privkey.pem.crt/.key 放到 /etc/nginx/ssl/(或沿用 /etc/letsencrypt/live/ 结构)。
  • 更新站点配置(示例):
    • 将 HTTP 重定向到 HTTPS:
      • server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; }
    • 配置 HTTPS:
      • server { listen 443 ssl; server_name yourdomain.com www.yourdomain.com;
        • ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; # 或 /etc/nginx/ssl/yourdomain.crt
        • ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # 或 /etc/nginx/ssl/yourdomain.key
        • ssl_protocols TLSv1.2 TLSv1.3;
        • ssl_prefer_server_ciphers on;
        • ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384;
        • ssl_session_timeout 10m;
        • ssl_session_cache shared:SSL:10m;
        • 可选:ssl_dhparam /etc/ssl/certs/dhparam.pem; (见下一步)

        • 可选安全头

        • add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload” always;
        • root /var/www/yourdomain.com; index index.html;
        • location / { try_files $uri $uri/ =404; }
      • }
  • 生成 DH 参数(可选但推荐):sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
  • 检查并重载 Nginx:
    • sudo nginx -t
    • sudo systemctl reload nginx(或 restart)。

四、验证与切换

  • 连通性与证书检查:
    • 浏览器访问 https://yourdomain.com 确认证书正确、链完整。
    • 使用 SSL Labs 测试评分与配置安全性。
  • 防火墙与端口:
    • 确保 443 端口开放(UFW:sudo ufw allow ‘Nginx Full’)。
  • 灰度切换建议:
    • 先保留旧站点的 HTTP→HTTPS证书回退 一段时间,确认新机器稳定后再下线旧证书与旧实例。
  • 常见问题排查:
    • 配置语法:sudo nginx -t 精确定位错误行。
    • 权限问题:私钥 600,证书 644,属主 root:root
    • 续期失败(Let’s Encrypt):检查域名解析、端口可达性、续期日志 /var/log/letsencrypt/letsencrypt.log

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在Ubuntu上迁移Nginx SSL
本文地址: https://pptw.com/jishu/762180.html
Ubuntu Nginx SSL如何设置密码 如何在Debian上查看Golang编译日志

游客 回复需填写必要信息