给上传目录单独配了 location,访问图片一直 404,换成另一种写法就正常。日志里能对上时间点,这种反而好排。
root 会拼接完整 URI 路径,alias 直接替换匹配部分,两者语义不同。这一点先确认清楚,后面就不用反复试。
location /static/ {
alias /data/app/static/;
}
location /files/ {
root /data/app;
}
「Nginx root alias」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
处理上按这个顺序:目录映射使用 alias;确认结尾斜杠一致;改完用 curl 验证真实文件路径。
结果对不对很好判断,静态资源返回 200,图片与样式正常加载。