index指令指定Nginx访问目录时按序查找的默认文件列表,找到首个存在文件即返回;未配置时默认为index.html;需配合autoindex、try_files等避免403或实现动态处理。

index 指令用于指定当用户访问一个目录(如 / 或 /blog/)时,Nginx 自动尝试查找并返回的默认文件名列表,按顺序匹配,找到第一个存在的即返回。
基本语法和位置
该指令可出现在 http、server 或 location 块中,优先级遵循 Nginx 配置继承规则:越靠近请求路径的配置越优先。
- 写法示例:
index index.html index.htm index.php; - 注意末尾必须有分号;多个文件名用空格分隔
- 若未显式配置,Nginx 默认值为
index.html
搜索顺序决定实际响应结果
Nginx 严格按指令中列出的顺序依次检查文件是否存在,只要某个文件在对应目录下真实存在,就立即返回它,不再继续往后查。
- 例如:
index index.php index.html;,且目录下同时有index.php和index.html→ 返回index.php - 若只存在
index.html→ 返回它;若都不存在 → 返回 403(禁止访问)或触发try_files(如果配置了) - 注意:Nginx 不会执行 PHP 文件,仅将其作为静态资源返回——要解析 PHP,需配合
fastcgi_pass等动态处理配置
常见配合项:避免 403 或跳转干扰
单独靠 index 无法解决所有目录访问问题,常需结合其他指令:
-
autoindex off;:关闭目录列表功能(否则当无匹配 index 文件时可能显示文件列表) -
try_files $uri $uri/ =404;:更灵活地判断请求路径是文件、目录还是交由后端处理 -
location / { ... }内配置index,可覆盖 server 级默认值,适合多站点差异化设置
调试技巧:确认生效与排查问题
修改后记得重载配置:nginx -t && nginx -s reload。验证方式包括:
- 用
curl -I http://your-domain/查看响应头中的Content-Type和状态码 - 临时删掉某个 index 文件,观察是否顺延到下一个
- 检查错误日志:
tail -f /var/log/nginx/error.log,常见提示如 “directory index of … is forbidden” 表明没匹配到文件且autoindex关闭











