可在location块中直接写index指令覆盖上级设置,专用于该路径,默认按空格分隔顺序查找首个存在文件;需以斜杠结尾、配合root/alias、避免proxy_pass等代理指令干扰。

可以在 location 块里直接写 index 指令,它会覆盖 server 或 http 层的设置,专用于该路径下的默认首页查找逻辑。
location 中 index 的作用范围明确
只要把 index 放在某个 location 块内,它就只对这个路径生效。比如访问 /admin/ 时想加载 admin.php,而不是全局设的 index.html,就单独配一个 location:
location /admin/ { root /var/www/app; index admin.php; }- 用户请求
https://example.com/admin/,Nginx 就去/var/www/app/admin/下找admin.php - 其他路径(如
/或/blog/)仍按各自 location 或上层配置处理
配合 root 或 alias 确保路径正确
index 查找依赖实际文件系统路径,必须和 root(或 alias)配合使用:
-
root是拼接路径:location 路径 + root 目录 + 请求 URI → 实际文件位置 -
alias是替换路径:location URI 被直接替换成 alias 后的目录,不叠加 - 例如:
location /static/ { alias /data/assets/; index default.css; }→ 访问/static/会查/data/assets/default.css
注意 proxy_pass 或 fastcgi_pass 会让 index 失效
如果 location 里用了反向代理或 PHP 处理,index 不起作用:
-
location /api/ { proxy_pass http://backend; index index.php; }→ index 被忽略,由后端决定返回什么 -
location ~ \.php$ { fastcgi_pass php-fpm; index index.php; }→ index 同样无效,PHP-FPM 自己解析入口文件 - 这类场景应由后端应用控制默认页,Nginx 只负责转发
大小写与权限问题常导致 index 不生效
Linux 文件系统区分大小写,且 Nginx 进程需有读取权限:
- 配置
index Index.html;,但实际文件是index.html→ 找不到 -
ls -l /var/www/site/显示属主不是 nginx 用户(如 www-data),或权限无读取位(-rw-r--r--正常,----------不行) - 用
nginx -t检查语法,再用curl -I http://localhost/看响应状态码,403 通常意味着权限或 autoindex 干扰











