Nginx SSL在Debian上的部署步骤

以下是在Debian上部署Nginx SSL的步骤(以Let’s Encrypt免费证书为例):

  1. 安装Nginx

    sudo apt update  
    sudo apt install nginx  
    
  2. 获取SSL证书

    • Let’s Encrypt(推荐)
      sudo apt install certbot python3-certbot-nginx  
      sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com  
      

      按提示完成域名验证,证书会自动存放在/etc/letsencrypt/live/yourdomain.com/

  3. 配置Nginx

    • 编辑站点配置文件(如/etc/nginx/sites-available/yourdomain.com.conf):
      server {  
          listen 80;  
          server_name yourdomain.com www.yourdomain.com;  
          return 301 https://$host$request_uri;  # 强制HTTP跳转HTTPS  
      }  
      
      server {  
          listen 443 ssl;  
          server_name yourdomain.com www.yourdomain.com;  
          ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;  
          ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;  
          ssl_protocols TLSv1.2 TLSv1.3;  
          ssl_ciphers HIGH:!aNULL:!MD5;  
          ssl_prefer_server_ciphers on;  
          location / {  
              root /var/www/html;  
              index index.html;  
          }  
      }  
      
  4. 启用配置并重启Nginx

    sudo ln -s /etc/nginx/sites-available/yourdomain.com.conf /etc/nginx/sites-enabled/  
    sudo nginx -t  # 测试配置语法  
    sudo systemctl reload nginx  
    
  5. 验证与优化

    • 浏览器访问:通过https://yourdomain.com确认证书生效(需显示安全锁标志)。
    • 自动续签:Let’s Encrypt证书需定期续签,可通过以下命令测试:
      sudo certbot renew --dry-run  
      

      并添加cron任务实现自动续签(如每天凌晨2点执行)。

可选步骤

  • 配置防火墙允许443端口:sudo ufw allow 'Nginx Full'
  • 启用HTTP/2:在server块中添加http2 on;

注:若使用自签名证书,需手动合并证书链(若有中间证书),并注意浏览器会提示“不安全”(仅适用于测试环境)。