温馨提示×

debian装nginxssl要注意啥

小樊
43
2026-09-14 20:04:41
栏目: 云计算

在 Debian 上安装并配置 Nginx + SSL(通常是 Let’s Encrypt 免费证书),有几个关键点常见坑要注意。下面按「安装 → 证书 → 配置 → 安全 → 排错」给你梳理。


一、安装 Nginx(Debian)

sudo apt update
sudo apt install nginx -y

安装后:

sudo systemctl status nginx

⚠️ 注意:

  • Debian 12 默认是 Nginx 1.22+,配置语法没问题
  • 如果是 Docker / 云服务器,确保 80 和 443 端口已放行

二、SSL 证书选择

1️⃣ 推荐使用 Let’s Encrypt(免费)

sudo apt install certbot python3-certbot-nginx -y

申请证书(自动改 Nginx 配置):

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

✅ 优点:

  • 自动签发
  • 自动配置 HTTPS
  • 自动续期

三、Nginx SSL 配置注意点(非常重要)

1️⃣ 防火墙 & 安全组

必须开放:

  • 80(用于验证)
  • 443(HTTPS)

UFW 示例:

sudo ufw allow 'Nginx Full'

2️⃣ 强制 HTTPS(避免混合内容)

在 server 块中:

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

3️⃣ 现代 SSL 配置(推荐)

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

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

四、证书续期(很容易忘)

Let’s Encrypt 证书 90 天有效

测试续期:

sudo certbot renew --dry-run

Debian 一般已自动配置 systemd timer ✅

检查:

systemctl list-timers | grep certbot

五、常见坑(重点)

❌ 1. 80 端口被占用

Certbot 验证失败
解决:

sudo lsof -i :80

❌ 2. DNS 没解析

证书申请前必须:

  • A 记录指向服务器 IP
  • 能 ping 通域名

❌ 3. 使用了 CDN(Cloudflare)

  • 需将 SSL 模式设为 Full
  • 或关闭代理(灰云)再申请证书

❌ 4. Nginx 配置写错

改完一定要:

sudo nginx -t
sudo systemctl reload nginx

六、可选增强(安全向)

  • 开启 HSTS
  • 禁用旧 TLS
  • 使用 HTTP/2
listen 443 ssl http2;
add_header Strict-Transport-Security "max-age=31536000" always;

七、总结一句话

Debian + Nginx + SSL 最稳方案: apt 装 nginxcertbot --nginx放行 80/443nginx -t

如果你愿意,可以告诉我:

  • Debian 版本(11 / 12)
  • 是否是云服务器 / Docker
  • 域名是否用 CDN

我可以直接给你一份可直接用的 nginx 配置

0