第一步不是上传文件,而是确认命中了哪个站点
一台 Nginx 可以配置多个站点。使用服务器 IP 打开的默认页面,与使用正式域名访问时匹配的页面,可能来自不同配置。排查时应保留实际域名,并分别检查 HTTP 和 HTTPS 请求,避免把默认站点的响应当作业务站点的结果。
检查 server_name 中是否包含访客使用的域名,并确认配置文件已经被主配置加载。写好了一个站点文件但没有启用,或只修改了 HTTP 配置而遗漏 HTTPS 配置,都会使排查方向偏离实际请求。
把 URL 与 root 目录放在一起核对
对普通静态站点而言,站点根目录和请求路径共同决定文件查找位置。例如,栏目地址 /articles/ 通常需要对应目录中的首页文件,而独立文章 /articles/example.html 则需要对应的 HTML 文件。部署目录多套了一层,是迁移和解压发布中常见的检查点。
还应检查文件名大小写、目录访问权限和 Nginx 工作进程是否有读取权限。权限问题有时会返回 403,并在错误日志中留下线索,因此不能只凭页面外观判断。不要为解决一个读取问题就给整个网站设置所有人可写权限。
使用明确的文件查找规则,保留真实错误
try_files 可以按设定顺序检查文件或目录,并在找不到资源时返回错误。对于由独立 HTML 文件组成的文章站,明确返回真实的 404,有助于发现失效链接。把所有不存在的网址都交给首页并返回 200,会掩盖发布问题,也会使读者进入与目标不符的页面。
每次变更后,先运行配置检查,再平滑重载。随后验证首页、栏目页、至少一篇文章,以及一个确定不存在的地址。把这四个结果纳入发布记录,可以比单独检查首页更早发现目录或规则错误。
阅读后的检查清单
- 确认实际访问的是目标域名对应的站点。
- 检查 URL 对应的文件是否存在,目录是否可读。
- 验证正常文章返回 200,不存在的文章返回 404。
资料来源
本文为公开资料整理与技术解读,不构成现场新闻报道。配置与步骤以所使用软件版本的官方文档为准。