nginx 未配置 index 指令时默认查找 index.html;该行为硬编码于源码,仅在完全未声明 index 时生效,一旦配置即覆盖默认值,且不继承;目录存在、权限允许、autoindex 关闭时尝试读取 index.html,不存在则返回 403。

Nginx 全局未配置 index 指令时,默认会查找 index.html。
这个默认行为是硬编码在 Nginx 源码中的,不依赖任何配置文件显式声明。只要某个 location 块(或其上级 server/http 块)中完全没有出现 index 指令,Nginx 就会自动按此单一文件名去探测:
- 请求路径为目录(如
/、/blog/) - 该目录真实存在且 Nginx 有读取权限
-
autoindex为off(默认值)
→ Nginx 尝试读取该目录下的index.html
如果 index.html 不存在,又没配置其他 fallback 机制(如 try_files 或 autoindex on),就会返回 403 Forbidden(因禁止列目录)。
注意:这个默认值不可被继承覆盖——它只在完全没写 index 指令时生效;一旦任意层级(http/server/location)写了 index,哪怕只写一个文件,也会完全取代该默认值。
补充说明:你不会在默认 nginx.conf 里看到 index index.html; 这行,但它就是这么工作的。这也是为什么很多新手放了 index.html 却打不开首页——往往是因为 location / { ... } 块里漏写了 index 指令,导致 Nginx 实际没启用索引逻辑。











