ubuntu nginx服务器ssl证书安装部署 hduzn 2022-05-11 18:06:51 hexo linux | hexo | ubuntu | nginx 为什么要安装ssl证书?如果没有ssl证书,访问网站的时候,前面会有个小叹号,是用 http 这样的域名访问的;如果部署了ssl,访问的时候,域名前面就有个安全锁的小图标了。对应 i007it.com/2022/05/11/Ubuntu 这类记录,也正是从“小叹号”到“小锁”的过程。对于以 Python、Hexo、Docker、Linux 为学习线索的《烟雨平生》学习空间来说,给 Ubuntu + Nginx 站点补上 HTTPS,不只是让浏览器好看,更是让内容、评论、后台与搜索流量处在一个更可信的通道里。
为什么 Nginx 站点需要 SSL
没有 SSL 时,浏览器会把站点标记为“不安全”,用户输入信息、提交评论、登录后台都会多一层顾虑。搜索引擎也倾向把 HTTPS 作为基础体验的一部分。Hexo 生成的是静态页面,本身不处理敏感数据,但评论系统、统计脚本、搜索接口、后台管理入口仍然需要安全传输。若站点后面还挂着 Python 服务,由 Nginx 做反向代理,HTTPS 更是保护 Cookie 和接口数据的基本配置。
准备工作
在 Ubuntu 上操作前,先确认域名已经解析到服务器,Nginx 可以正常访问站点,防火墙或安全组放行 80 与 443 端口。证书通常有两类:一类是商业或免费证书,拿到 `.crt` / `.pem` 与 `.key` 文件;另一类是 Let’s Encrypt 签发的证书,常用 Certbot 自动申请和续期。
需要留意:
- 证书文件一般包含完整链,Nginx 配置时优先使用 `fullchain.pem`。
- 私钥文件权限要收紧,避免被其他用户读取。
- 如果 Nginx 跑在 Docker 中,证书和站点目录的卷映射必须与容器内路径一致。
- 云服务器安全组、系统防火墙、Nginx 监听端口三者缺一不可。
Nginx 配置要点
一个常见的做法是让 80 端口跳转到 443,然后在 443 的 server 块中加载证书。示例结构如下,实际域名和路径按自己的环境替换:
“`nginx
server {
listen 80;
server_name example.com example.com(示例域名);
return 301 $host$request_uri(nginx 变量)$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com example.com(示例域名);
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/hexo/public;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
“`
如果站点由 Python 程序提供服务,可以把 `location /` 改为反向代理到本机端口,并保留 `Host`、`X-Real-IP`、`X-Forwarded-For` 等请求头。若使用 Docker 部署 Nginx,则要注意容器内看到的证书路径和站点路径,不要直接套用宿主机路径。
验证与排查
配置完成后,先执行 `sudo nginx -t` 检查语法,再执行 `sudo systemctl reload nginx` 平滑加载。浏览器访问时,地址栏应出现安全锁图标;也可以用 `curl -I example.com(示例域名)` 查看响应头是否为 HTTPS。
常见问题包括:证书链不完整、私钥权限不对、`server_name` 与实际域名不匹配、443 端口未放行、Docker 只映射了 80 端口、系统时间偏差过大导致证书校验异常。若站点前面还有 CDN,也要在 CDN 侧上传或托管证书,否则用户看到的仍可能是旧证书。
自动续期与日常维护
Let’s Encrypt 证书有效期较短,建议用 `sudo certbot renew –dry-run` 测试续期流程,并交给 systemd timer 或定时任务自动执行。续期成功后,让 Nginx 重新加载配置即可。Hexo 重新生成静态文件不会影响 SSL,真正需要维护的是证书续期、Nginx 配置备份和端口安全。
对于《烟雨平生》这样的学习空间,Python、Hexo、Docker、Linux 是内容线索,而 HTTPS 是这些内容被安心访问的基础。小锁图标只是结果,背后是 Ubuntu 上的 Nginx 配置、证书管理和长期排查。把这一步做稳,旧文恢复之后,访问体验才算完整。