DAY018 – nginx 静态 root 指向备份目录
故障场景
故障现象:nginx health 与 API 正常,但门户首页返回 403,nginx root 指向了备份目录。
服务器状态:server2:状态 INJECTED;开始时间 2026-07-31 05:00:11 +0800;影响范围 演练项目受影响,SSH 不受影响,非演练业务不应受影响。
排障过程
1. 看项目文档
先看项目文档,了解本次演练环境的基本信息:
- nginx 程序:
/usr/sbin/nginx - systemd 服务:
nginx.service - nginx 配置:
/etc/nginx/sites-available/hermes-day018.conf - nginx 启用配置:
/etc/nginx/sites-enabled/hermes-day018.conf - nginx 日志:
/var/log/nginx/hermes-day018-access.log、/var/log/nginx/hermes-day018-error.log - 应用目录:
/opt/hermes-drills/day018 - API 程序:
/opt/hermes-drills/day018/app/api.py - API 启动脚本:
/opt/hermes-drills/day018/start-app.sh - API 日志:
/opt/hermes-drills/day018/logs/api.log - 可执行场景套件:
/home/monika/hermes-ops-drills/standard-scenario-suite.md
端口:
- nginx:
18080 - API:
127.0.0.1:18081
2. 实际 curl 本地端口确认 nginx 门户
curl -i 127.0.0.1:18080
返回 HTTP/1.1 403 Forbidden,Server 为 nginx/1.24.0 (Ubuntu),确认门户首页返回 403。
3. 403 报错大多为权限不足
应该先看 nginx 的错误日志。
4. 定位到备份目录
问题出在路径 /opt/hermes-drills/day018/public-backup/ 的权限,或者该目录下的首页文件有问题。检查发现该目录下没有任何文件。
5. 检查已应用站点的路径相关配置
问题在于 public-backup 目录下没有对应的首页文件 index.html。从 public-backup 的名称可知,这是一个网页备份目录,于是在项目目录中寻找实际项目文件。
6. 恢复业务
找到实际首页文件后,先备份之前的错误站点文件。虽然错误很简单,但这可以作为证据,后续用于寻找上一个修改此文件的人,方便找到导致这次事故的人。
不过首要任务是恢复业务:时间紧的话,复制完了就应该开始改正 conf 文件,修改源文件一个即可,链接文件相当于快捷方式。
改正后各接口都报 200,业务恢复了。
时间不紧、客流量不大,或者负载均衡的情况的话,可以先把证据记录下来,后续追责。
小结:403 排障日常小问题。
原文首发于个人博客:liujixiang.de5.net
- 点赞
- 收藏
- 关注作者
评论(0)