HYSXIII技术资讯
服务器运维 · TECH BRIEFING

Nginx 静态网站出现 404,先核对域名匹配和文件路径

静态网站部署看似只需要上传 HTML 文件,但访问时出现 404,问题未必出在文件本身。请求是否进入了正确的站点,以及网址最终被映射到哪个磁盘路径,通常是排查的起点。

第一步不是上传文件,而是确认命中了哪个站点

一台 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。

资料来源

  1. Nginx 官方文档:root 与 try_files
  2. Nginx 官方文档:请求如何匹配站点

本文为公开资料整理与技术解读,不构成现场新闻报道。配置与步骤以所使用软件版本的官方文档为准。

上一篇域名已解析却打不开,DNS 查询结果为何仍可能不同下一篇网站启用 HTTPS 后,跳转规则和旧链接也需要一起检查