index指令用于指定目录访问时默认返回的文件,需置于server或location块中,按空格分隔的从左到右顺序查找首个存在的文件并返回。

在 Nginx 中,index 指令就是控制“访问一个目录时,该自动返回哪个文件”的开关。它不跳转、不重写、不代理,只是安静地按你写的顺序,在目录里一个个找文件——找到第一个存在的,就直接发给浏览器。
index 指令怎么写才有效
必须写在 server 或 location 块里,不能孤零零放在配置最外层(http 块中虽允许,但容易被覆盖,不推荐作为主配置位置)。语法很简单:
-
index index.html index.htm index.php;—— 多个文件名用空格分隔,结尾必须有分号 - 文件名是相对路径,比如
index /welcome.html;表示去找 root 目录下的welcome.html,不是绝对路径 - 不能加引号,
index "index.html";是非法写法;也不能写成逗号分隔,index index.html,index.php;会报错 - 不写 index 指令时,Nginx 默认只查
index.html
加载顺序不是“建议”,而是严格左到右匹配
顺序决定一切。比如配置了 index index.php index.html;:
- 用户访问
/,Nginx 先检查/var/www/site/index.php是否存在且可读 - 存在 → 立即返回,哪怕
index.html更新更频繁,也完全不看后面 - 不存在 → 才继续查
index.html;再不存在 → 查完列表,若无匹配且未开启 autoindex,则返回403 Forbidden
注意:Nginx 不执行 PHP,只是把文件内容传出去。要让 index.php 真正运行,还需额外配好 location ~ \.php$ 和 fastcgi_pass。
不同路径用不同首页逻辑
利用 location 块的就近优先原则,可以精细控制子目录行为:
-
location /admin/ { index admin.php; }→ 访问/admin/时只认admin.php,不回退 -
location /static/ { index index.htm; }→ 静态资源区统一用index.htm -
location /raw/ { index ""; }→ 空值表示禁用默认页查找,任何对/raw/的目录访问都会直接 403(除非开启 autoindex)
常见配合项:避免 403 和实现兜底
单独靠 index 往往不够,实际部署中常需组合使用:
-
autoindex off;—— 关闭目录列表,防止无 index 文件时意外暴露文件结构 -
try_files $uri $uri/ /index.html;—— SPA 场景必备:先找真实文件,再触发 index 逻辑,最后 fallback 到前端路由入口 - 权限检查不能少:确保 Nginx 工作进程(如 www-data)对目标文件有读取权限,否则即使存在也会当作“不存在”处理
改完配置后,务必运行 nginx -t 测试语法,再执行 nginx -s reload 或通过面板重启服务,修改才会生效。










