温馨提示×

Nginx SSL在Debian如何启用

小樊
37
2026-10-17 08:21:29
栏目: 云计算

下面是在 Debian 上通过 Nginx 启用 SSL(HTTPS) 的常见做法,以 Let’s Encrypt 免费证书 为例(也适用于自签名或商业证书)。


一、前提条件

  1. 已安装 Debian(如 11/12)
  2. 已安装 Nginx
    sudo apt update
    sudo apt install nginx
    
  3. 已绑定域名(如 example.com)
  4. 域名 DNS 已解析到服务器 IP
  5. 防火墙放行 80 / 443
    sudo ufw allow 80
    sudo ufw allow 443
    

二、使用 Let’s Encrypt 启用 SSL(推荐)

1. 安装 Certbot

sudo apt install certbot python3-certbot-nginx

2. 自动申请并配置 SSL

sudo certbot --nginx -d example.com -d www.example.com

Certbot 会:

  • 自动申请证书
  • 修改 Nginx 配置
  • 启用 HTTPS
  • 设置 HTTP → HTTPS 跳转

三、手动配置 Nginx SSL(适用于已有证书)

1. 准备证书文件

假设证书位置:

/etc/ssl/example.com/fullchain.pem
/etc/ssl/example.com/privkey.pem

2. 编辑 Nginx 站点配置

sudo nano /etc/nginx/sites-available/example.com

示例配置:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate     /etc/ssl/example.com/fullchain.pem;
    ssl_certificate_key /etc/ssl/example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

3. 启用站点

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

4. 测试并重启

sudo nginx -t
sudo systemctl restart nginx

四、自动续期(Let’s Encrypt)

sudo certbot renew --dry-run

系统通常会自动添加定时任务。


五、验证 SSL

  • 浏览器访问:https://example.com
  • 在线检测:https://www.ssllabs.com/ssltest/

六、常见问题

  • 443 无法访问:检查防火墙 / 云安全组
  • 证书不信任:确认证书链完整
  • 混合内容:页面资源需用 https

如果你需要:

  • 自签名证书
  • 多域名 / 泛域名
  • Nginx + Docker
  • 强制 HSTS

可以告诉我你的具体场景。

0 踩