温馨提示×

Debian中Nginx SSL如何设置

小樊
48
2026-08-29 09:21:31
栏目: 云计算

在 Debian 系统中为 Nginx 配置 SSL(HTTPS),常见、推荐的做法如下(假设域名已解析到服务器,且使用 Let’s Encrypt 免费证书)。


一、准备条件

  • Debian 10 / 11 / 12
  • 已安装 Nginx
  • 域名已解析到服务器公网 IP(如 example.com
  • 80 / 443 端口未被防火墙拦截

二、安装 Nginx(如未安装)

sudo apt update
sudo apt install nginx -y

三、申请 SSL 证书(Let’s Encrypt)

1️⃣ 安装 Certbot

sudo apt install certbot python3-certbot-nginx -y

2️⃣ 申请证书并自动配置 Nginx

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

按提示操作:

  • 输入邮箱
  • 同意服务条款
  • 是否重定向 HTTP → HTTPS(推荐选 2

✅ Certbot 会自动:

  • 申请证书
  • 修改 Nginx 配置
  • 重载 Nginx

四、手动配置 SSL(不推荐,除非你有证书)

如果你已有证书:

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

    ssl_certificate     /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;

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

    root /var/www/html;
    index index.html index.php;

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

# HTTP 跳转 HTTPS
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

五、自动续期(非常重要)

Let’s Encrypt 证书 90 天有效

测试续期

sudo certbot renew --dry-run

自动续期

Debian 默认已配置 systemd timer:

systemctl status certbot.timer

六、安全优化(推荐)

1️⃣ 启用 HSTS

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

2️⃣ 使用现代 SSL 配置

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384';

七、检查配置并重启

sudo nginx -t
sudo systemctl reload nginx

八、常见问题

❌ 证书申请失败

  • 检查 80 端口是否被占用
  • 防火墙是否放行:
sudo ufw allow 80
sudo ufw allow 443

❌ 浏览器提示不安全

  • 证书未正确加载
  • 域名不匹配
  • 未重启 Nginx

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

  • Debian 具体版本
  • 是否使用 Docker
  • 是否部署 PHP / 反向代理

我可以给你 完全定制的 Nginx SSL 配置

0