Nginx的index指令需置于server块内,按顺序匹配首个存在且可读的文件,root路径末尾不可加斜杠,并须配合try_files确保无尾斜杠请求也能加载首页。
Nginx 的 index 指令本身很简单,但配错位置、顺序或配合方式,首页就可能打不开、跳错文件,甚至返回 403。核心不是“写上就行”,而是让 Nginx 在正确时机、用正确路径、按正确顺序,精准命中你要的首页。
把 index 放在 server 块里,别放全局
index index.html index.htm; 顺序即优先级,第一个存在的才生效
index a.html b.html c.php; 表示:先查 a.html → 存在且可读就返回,不看后面 -rw-r--r--(644),属组包含 nginx 用户 root 路径必须严格匹配,末尾不能加斜杠
root /var/www/site; → 请求 / 时查找 /var/www/site/index.html root /var/www/site/; → 可能拼成 /var/www/site//index.html,导致 403 或 404 index.html 确实放在该目录下,且名字全小写(Linux 区分大小写) 无尾斜杠请求(如 example.com)也要加载首页?靠 try_files 补位
index 只对 / 或 /blog/ 这类以 / 结尾的目录请求生效 example.com(无 /),index 不触发 → 必须配合: location / { root /var/www/site; index index.html; try_files $uri $uri/ /index.html;}
$uri/ 触发 index 查找;/index.html 是兜底,确保裸域名也能显示首页(尤其 SPA 场景) 子路径要不同首页?用 location 单独定义
/admin/ 想默认加载 admin.php,而不是 index.html: location /admin/ { root /var/www/app; index admin.php;}
/var/www/app/admin/admin.php(root + URI + 文件名) alias,路径计算规则不同,新手建议统一用 root 避免混淆 不复杂但容易忽略细节。关键就是记住:顺序即优先级,存在 ≠ 可用,就近配置胜于全局设定。