温馨提示×

Debian nginx如何开启HTTPS

小樊
39
2026-09-12 11:00:34
栏目: 智能运维

在 Debian 上通过 nginx 开启 HTTPS,常见做法是使用 Let’s Encrypt 免费证书自签名证书。下面分别说明。


一、使用 Let’s Encrypt(推荐,公网可用)

1. 安装 nginx 和 certbot

sudo apt update
sudo apt install nginx certbot python3-certbot-nginx -y

2. 确保域名解析正确

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

3. 自动申请并配置 HTTPS

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

按提示选择:

  • 是否重定向 HTTP → HTTPS(建议选 Redirect)

4. 验证配置

sudo nginx -t
sudo systemctl reload nginx

5. 自动续期(默认已配置)

sudo certbot renew --dry-run

二、使用自签名证书(测试/内网)

1. 生成私钥和证书

sudo openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout /etc/ssl/private/nginx-selfsigned.key \
  -out /etc/ssl/certs/nginx-selfsigned.crt

2. 创建 nginx HTTPS 配置

sudo nano /etc/nginx/sites-available/default

示例配置:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate     /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

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

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

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

3. 测试并重载

sudo nginx -t
sudo systemctl reload nginx

三、防火墙注意

若使用 UFW:

sudo ufw allow 'Nginx Full'

四、常见问题

  • 端口未开放:确认 80/443 已放行
  • 证书不信任:自签名证书浏览器会警告,属正常
  • 证书失效:检查系统时间是否正确

如果你愿意,我可以:

  • 帮你写 完整 nginx 配置
  • 区分 单域名 / 多域名 / 泛域名
  • 配置 HTTP/2 / 强安全策略

直接告诉我你的使用场景即可。

0