Nginx的index指令必须置于server块内,按优先级从左到右列出文件名并以分号结尾;它仅对带尾斜杠的目录请求生效,需配合try_files处理无斜杠请求,且root路径末尾不可加斜杠、文件名须严格匹配大小写。

直接在 server 块里写 index 指令,按你想要的优先级从左到右列出文件名,末尾加英文分号即可。这是最稳妥、最常用的做法。
必须写在 server 块内,别放错位置
index 指令要放在具体的 server { ... } 里面,而不是全局 http 块或某个 location 外部。这样能确保只影响当前站点,不会被其他虚拟主机继承或覆盖。
- ✅ 正确写法:
server {<br> listen 80;<br> server_name example.com;<br> root /var/www/html;<br> <strong>index index.html index.htm index.php;</strong><br> ...<br>} - ❌ 错误写法:把
index放在http { ... }顶层,容易导致多个站点行为不一致;或者漏掉分号、写在location外但没嵌套进server
顺序决定实际加载哪个文件
Nginx 严格按你写的顺序,依次检查 root 目录下是否存在对应文件,找到第一个就用它,不再往后看。
- 比如
index index.php index.html;:访问/时,先查/var/www/html/index.php,存在就返回并可能交给 PHP 处理;不存在才查index.html - 如果目录下只有
home.html,而你没把它写进index列表,Nginx 就不会自动选它——它只认列表里写的那些名字 - 默认值是
index index.html;,所以不配置的话,只找index.html
配合 try_files 处理无尾斜杠请求
单纯靠 index 只能响应 / 或 /blog/ 这类带斜杠的目录请求。如果用户访问的是 /blog(没斜杠),Nginx 不会自动触发 index,需要 try_files 补位:
- 推荐搭配:
location / {<br> index index.html;<br> try_files $uri $uri/ /index.html;<br>} - 这样无论用户输
/、/about还是/about/,都能正确加载首页或由前端路由接管(适合 Vue/React SPA)
注意 root 路径和权限细节
index 查的是 root 所指目录下的文件,路径末尾不能多加斜杠(如 root /var/www/html/; 是错的,应写 root /var/www/html;)。
- 确保 Nginx 进程对这些文件有读取权限,否则即使存在也会返回 403
- 修改后必须重载或重启 Nginx(
nginx -s reload或通过服务管理命令),配置才生效 - 大小写敏感:Linux 下
Index.html和index.html是两个文件,列表里写错大小写就匹配不上


















