最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx 中 HTTPS 配置如何申请并安装免费的 SSL 证书
时间:2026-08-23 12:09:48 编辑:袖梨 来源:一聚教程网
Nginx启用HTTPS推荐用Let’s Encrypt免费证书配合certbot自动部署,支持一键申请、配置及自动续期;也可手动安装云平台证书,需正确配置ssl_certificate等指令并确保Nginx编译含--with-http_ssl_module模块。
在 Nginx 中启用 HTTPS,核心是拿到合法 SSL 证书并正确配置。目前最主流、最推荐的方式是使用 Let’s Encrypt 免费证书,配合 certbot 工具自动申请和部署,整个过程基本无需手动操作证书文件。
用 certbot 一键申请并配置(推荐)
这是最快捷、最可靠的方式,certbot 会自动完成验证、申请、写入 Nginx 配置、重启服务,还内置自动续期机制。
- 确保域名已正确解析到服务器 IP,且服务器 80 端口对公网开放(Let’s Encrypt 通过 HTTP 验证域名控制权)
- 安装 certbot(Ubuntu/Debian 示例):sudo apt update && sudo apt install certbot python3-certbot-nginx
- 运行命令直接部署(以 example.com 为例):sudo certbot --nginx -d example.com -d www.example.com
- 执行后会提示选择是否强制跳转 HTTPS,建议选“2”启用 301 重定向
- certbot 自动修改配置、部署证书,并添加 systemd 定时任务(每天凌晨自动检测续期)
手动安装已有证书(如腾讯云/阿里云下载的)
适用于从云平台申请后手动上传证书的场景,需注意文件格式和路径配置。
- 下载证书包后解压,取两个关键文件:xxx.crt(或 bundle.crt) 和 xxx.key
- 将这两个文件上传到服务器固定目录,例如:/usr/local/nginx/ssl/example.com.crt 和 /usr/local/nginx/ssl/example.com.key
- 编辑 Nginx 配置(如 /etc/nginx/conf.d/default.conf),添加或修改 server 块:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /usr/local/nginx/ssl/example.com.crt;
ssl_certificate_key /usr/local/nginx/ssl/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...;
# 其他常规配置...
}
- 务必再加一个 80 端口 server 块实现 HTTP 跳转:return 301 https://$host$request_uri;
- 检查语法:nginx -t;无误后重载:nginx -s reload
确认 Nginx 支持 SSL 模块
如果执行 nginx -V 输出中没有 --with-http_ssl_module,说明当前 Nginx 编译时未包含 SSL 支持,必须补上。
- 进入 Nginx 源码目录(如 /usr/local/src/nginx-1.24.0)
- 运行:./configure --prefix=/usr/local/nginx --with-http_ssl_module
- 执行 make(不要 make install),完成后替换原 nginx 二进制文件:cp objs/nginx /usr/local/nginx/sbin/
- 再次运行 nginx -V 确认模块已启用
补充说明:证书有效期与续期
Let’s Encrypt 证书有效期为 90 天,但 certbot 默认已配置自动续期(systemd timer 或 cron)。可手动测试续期是否正常:sudo certbot renew --dry-run。若使用云平台证书,则需在到期前重新申请并手动更新配置。