Nginx的index指令定义目录访问时按序匹配的默认首页文件,作用域优先级为location>server>http,需配合权限、大小写、autoindex及后端代理等配置避免失效。

Nginx 的 index 指令用于定义当用户访问一个目录(如 / 或 /blog/)时,Nginx 自动尝试查找并返回的默认首页文件列表,按顺序匹配,找到第一个存在的即返回。
index 指令的位置和作用范围
该指令必须写在 http、server 或 location 块中,优先级从高到低:location > server > http。实际生效的是最内层生效的配置。
- 放在
http块中,为所有虚拟主机设全局默认值 - 放在
server块中,影响该站点所有路径(除非被 location 覆盖) - 放在
location块中,仅对该路径生效,适合不同目录用不同首页逻辑
语法格式与常见写法
index 后跟一个或多个文件名,以空格分隔,Nginx 依次检查这些文件是否存在于请求目录下:
index index.html index.htm index.php;
例如访问 https://example.com/,Nginx 会按顺序检查:
→ /usr/share/nginx/html/index.html(存在则直接返回)
→ 否则查 index.htm,再否则查 index.php,直到找到或全部失败返回 403/404。
配合 try_files 实现更灵活的兜底逻辑
index 只负责“静态文件匹配”,不处理重写或动态路由。若需支持 SPA(如 Vue/React 的 history 模式),应配合 try_files:
location / {
index index.html;
try_files $uri $uri/ /index.html;
}
这样既保留默认首页逻辑,又能在找不到具体资源时回退到 index.html,由前端路由接管。
注意事项和易错点
以下情况容易导致 index 不生效:
- 目录权限不足,Nginx 无法读取文件(检查
ls -l和 nginx 用户权限) - 文件名大小写错误(Linux 文件系统区分大小写,
Index.html≠index.html) - 未启用
autoindex off;(开启 autoindex 会忽略 index,直接列目录) - location 中使用了
proxy_pass或fastcgi_pass,此时 index 不起作用——后端(如 PHP-FPM)应自行处理默认页










