nginx 的 index 指令按空格分隔顺序查找首页文件,如 index index.html index.htm index.php;,找到首个存在文件即返回;配合 try_files 可处理 spa 路由回退等场景。

Nginx 支持通过 index 指令配置多个首页文件名,它会按顺序依次查找,找到第一个存在的就返回,其余忽略。
基本语法与顺序匹配逻辑
index 指令写在 server 或 location 块中,多个文件名用空格分隔:
index index.html index.htm index.php;
当用户访问目录(如 / 或 /blog/)时,Nginx 会按顺序检查:
→ 是否存在 index.html?存在则直接返回;
→ 否则检查 index.htm;
→ 再否则检查 index.php;
→ 全部不存在则返回 403 或 404(取决于 autoindex 设置)。
常见组合与实用建议
- 静态优先:推荐
index.html index.htm,兼顾常见命名习惯 - 动静混合:加
index.php适合 PHP 应用,但注意性能和安全(确保 PHP 处理已正确配置) - 自定义入口:如 Vue/React 单页应用可设为
index.html,再配合try_files处理前端路由 - 避免冗余:不建议堆砌过多文件名(如
index.shtml index.cgi index.pl),既无必要也略增开销
配合 try_files 提升健壮性
仅靠 index 无法处理「目录存在但首页全无」或「前端路由 fallback」场景。此时应搭配 try_files:
location / {
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
这段配置含义是:
→ 先尝试精确匹配请求 URI;
→ 不匹配则尝试作为目录查找(触发 index 指令);
→ 都失败则回退到 /index.html(适合 SPA)。
验证与调试小技巧
- 修改后务必运行
nginx -t检查语法 - 用
curl -I http://your-domain/查看响应头中的Content-Type和状态码,确认是否命中预期文件 - 临时关闭
autoindex on(如有),避免目录列表干扰判断 - 注意文件权限:Nginx 工作进程需对目标文件有读取权限











