curl -sI -H 'Host: origin.example.com' https://origin-ip/a.jpg
# 期望 content-type 是 image/*

图片地址返回 200,内容却是另一个站点的首页 HTML,浏览器显示破图,源站访问日志里记的是默认站点。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,回源配置把 Host 设成了 CDN 加速域名,源站的虚拟主机匹配不到,落到第一个默认站点。Nginx 按 Host 分发,这种情况不会报错。

这次卡住的地方就在「回源 Host 错误」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。

处理上按这个顺序:把回源 Host 改成源站真实域名,和站点配置里的 server_name 对上;回源协议和端口一并核对,别只改 Host;用 curl 指定 Host 请求一次,确认返回的是图片而不是 HTML。

改完只确认一件事:图片地址返回的 Content-Type 是图片类型,不再是 text/html。

作者 9823189