阿里云 ECS + Nginx 配置 HTTPS 完整教程(Let's Encrypt 免费证书)
本文介绍在阿里云 ECS(Linux)+ Nginx 环境下,用 Let’s Encrypt 免费证书开启 HTTPS 的完整流程。全程免费,证书自动续期,适合企业官网、博客和一般业务系统。
前置条件
- 一台阿里云 ECS,安全组已放行 80 和 443 端口(控制台 → 安全组 → 配置规则)
- 域名已解析到这台 ECS(
ping yourdomain.com返回 ECS 公网 IP) - 已安装 Nginx 并能通过 HTTP 访问网站
- 域名已完成 ICP 备案(国内节点必需)
第一步:安装 certbot
以 Ubuntu/Debian 为例:
sudo apt update
sudo apt install -y certbot python3-certbot-nginx
CentOS / Alibaba Cloud Linux:
sudo yum install -y certbot python3-certbot-nginx
第二步:一键申请并部署证书
certbot 会自动修改 Nginx 配置并reload:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
按提示输入邮箱,同意条款,选择「Redirect」(强制 HTTPS 跳转)即可。看到 Congratulations 就说明证书已部署完成。
第三步:确认 Nginx 配置
certbot 生成的关键配置大致如下(位于站点配置文件中):
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
root /var/www/yourdomain;
index index.html index.php;
location / { try_files $uri $uri/ =404; }
}
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
重点检查两个地方:
- 80 端口的
return 301:所有 HTTP 访问必须 301 到 HTTPS,这关系到 SEO 权重交接 - 证书路径:
fullchain.pem是完整证书链,不要只配cert.pem,否则部分手机浏览器会报错
第四步:验证自动续期
Let’s Encrypt 证书有效期 90 天,certbot 安装后自带定时任务。手动验证续期流程(不会真的续,只是演练):
sudo certbot renew --dry-run
看到 Congratulations, all simulated renewals succeeded 即可。可以再确认定时器在跑:
systemctl list-timers | grep certbot
常见问题排查
「Failed authorization procedure」验证失败:九成是 80 端口不通。检查安全组是否放行 80,以及域名解析是否指向本机。
配完还是提示不安全:通常是混合内容——页面里还有 http:// 的图片或脚本。浏览器 F12 → Console 里会列出具体是哪个资源,逐个改成 https:// 或相对路径。
部分手机打不开:证书链不完整,确认用的是 fullchain.pem 而不是 cert.pem。
「证书域名不匹配」:申请时只带了 yourdomain.com,访客却走 www.yourdomain.com。两个都要写进 -d 参数,或者干脆用通配符证书。
不想自己动手?
这套流程我们每个月都会做很多遍。如果您的环境比较复杂(多个子域名、CDN、虚拟主机面板、老版本系统),或者只是不想折腾,可以看看我们的 HTTPS 升级服务,300 元起,全程人工代办,交付后带售后保障。先用在线检测工具看看您的网站现状也行。