温馨提示×

Nginx SSL在Debian怎部署

小樊
34
2026-09-02 15:57:09
栏目: 云计算

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


一、环境准备

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装 Nginx

sudo apt install nginx -y

3. 开放防火墙(如有)

sudo ufw allow 80
sudo ufw allow 443

二、域名解析(必须)

确保你的域名(如 example.com)已解析到服务器公网 IP:

example.com  A  你的服务器IP
www.example.com A  你的服务器IP

三、使用 Let’s Encrypt 部署 SSL(推荐)

1. 安装 Certbot

sudo apt install certbot python3-certbot-nginx -y

2. 自动申请并配置 SSL

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

按提示输入邮箱、同意协议即可。

Certbot 会自动:

  • 申请证书
  • 修改 Nginx 配置
  • 启用 80 → 443 跳转

四、Nginx SSL 配置示例(手动方式)

如果你使用已有证书(如 /etc/ssl/example.com.crt.key):

1. 放置证书

sudo mkdir -p /etc/nginx/ssl
sudo cp example.com.crt /etc/nginx/ssl/
sudo cp example.com.key /etc/nginx/ssl/

2. 配置站点

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/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

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

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

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

3. 启用站点

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

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

测试续期:

sudo certbot renew --dry-run

Debian 通常已自动配置 systemd timer。


六、常见问题

1. 证书不生效

  • 检查域名解析
  • 检查 80 端口是否可访问
  • nginx -t 看配置错误

2. 强制 HTTPS

已在配置中用 return 301 https://

3. 多域名

sudo certbot --nginx -d a.com -d b.com

如果你需要:

  • 自签证书
  • Docker + Nginx SSL
  • 反向代理 SSL
  • 泛域名证书(*.example.com)

可以告诉我你的使用场景。

0