一聚教程网:一个值得你收藏的教程网站

热门教程

Nginx 如何通过 index 指令配置多个默认首页的优先级顺序

时间:2026-08-15 12:23:49 编辑:袖梨 来源:一聚教程网

Nginx的index指令按书写顺序从左到右匹配首个存在且可读的默认首页文件;多个文件名空格分隔、结尾加分号,不可加引号或绝对路径;支持http/server/location三级配置,就近生效;需确保文件权限为644且属主属组正确;常与try_files配合实现PHP路由兜底。

Nginx 通过 index 指令设置多个默认首页时,优先级完全由指令中文件名的书写顺序决定:从左到右依次检查,找到第一个存在且 Nginx 有读取权限的文件就立即返回,后续文件不再尝试。

写法与基本规则

语法很简单,多个文件名用空格分隔,结尾必须加分号:

  1. index index.php index.html index.htm; → 先找 index.php,存在就返回;否则查 index.html,再是 index.htm
  2. 未配置时,Nginx 默认只认 index index.html;
  3. 不能加引号,不能用绝对路径(如 /var/www/index.php),也不能写成 index "index.php";index index.php ;(末尾空格+分号会报错)

配置位置影响生效范围

指令可放在 httpserverlocation 块中,优先级按“就近原则”生效:

  1. 写在 location /admin/ { } 里 → 只对 /admin/ 路径有效,比如 index admin.php;
  2. 写在 server 块里 → 影响整个站点,但会被子 location 覆盖
  3. 写在 http 块里 → 全局默认,优先级最低,容易被覆盖

注意文件“存在”不等于“可用”

匹配过程不仅检查文件是否存在,还会验证 Nginx worker 进程是否有读取权限:

  1. index.php 文件存在,但权限为 600 且属主不是 nginxwww-data → 被跳过,继续查下一个
  2. 推荐设为 644,所属组包含运行用户(如 chown -R www-data:www-data /var/www/html
  3. 可通过 ls -l /path/to/fileps aux | grep nginx 确认用户和权限是否匹配

配合 try_files 实现更可靠 fallback

index 只负责目录访问时的静态文件匹配,若想在找不到首页时交给 PHP 路由(如 Laravel、WordPress),需搭配 try_files

  1. location / { index index.php index.html; try_files $uri $uri/ /index.php?$query_string; }
  2. 这里 $uri/ 触发 index 查找逻辑,而 /index.php 是兜底转发
  3. 注意:index 仍需显式声明(如 index index.php;),否则 $uri/ 不会触发内部重定向

热门栏目