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

最新下载

热门教程

Nginx 的 index 指令配置技巧

时间:2026-06-20 09:55:52 编辑:袖梨 来源:一聚教程网

Nginx的index指令需置于server块内,按顺序匹配首个存在且可读的文件,root路径末尾不可加斜杠,并须配合try_files确保无尾斜杠请求也能加载首页。

Nginx 的 index 指令本身很简单,但配错位置、顺序或配合方式,首页就可能打不开、跳错文件,甚至返回 403。核心不是“写上就行”,而是让 Nginx 在正确时机、用正确路径、按正确顺序,精准命中你要的首页。

把 index 放在 server 块里,别放全局

  • 全局(http 块)配置容易被多个站点继承或覆盖,尤其多域名或多端口部署时风险高
  • 每个站点对应一个 server 块,直接在里面写:
    index index.html index.htm;
  • 这样逻辑清晰,作用范围明确,修改不影响其他服务

顺序即优先级,第一个存在的才生效

  • index a.html b.html c.php; 表示:先查 a.html → 存在且可读就返回,不看后面
  • 文件存在但权限为 600(仅属主可读)?Nginx 工作进程(如 www-data)读不了,会跳过,继续查 b.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 避免混淆

不复杂但容易忽略细节。关键就是记住:顺序即优先级,存在 ≠ 可用,就近配置胜于全局设定。

热门栏目