index指令核心是让Nginx在用户访问真实存在的目录时,按序查找并返回配置的默认文件(如index.html),需配合root路径、权限设置及try_files实现完整mockup路由。

用 index 指令搭静态 mockup,核心不是“让它干活”,而是“告诉 Nginx:用户访问目录时,你该拿哪个文件当首页”。它本身不处理逻辑、不转发、不重写,只在请求明确指向一个真实存在的目录(如 /design/)时,按顺序找配置的默认文件。配合 root 和基础结构,就能零后端跑通页面原型。
确认 root 路径和文件结构就位
先确保你的 mockup 文件已放好,比如:
- 所有 HTML/CSS/JS 放在
/var/www/mockup/下 - 其中包含
/var/www/mockup/index.html(主入口) - 还有子页如
/var/www/mockup/login.html、/var/www/mockup/assets/css/style.css
路径必须真实存在,且 Nginx 进程用户(如 www-data 或 nginx)对整个路径有 r-x 权限(读 + 进入目录)。
用 index 定义默认响应文件
index 指令写在 location 或 server 块里,列出多个候选名,Nginx 从左到右检查,找到第一个存在的就用它:
-
index index.html login.html;→ 访问/或/auth/(且该目录存在)时,优先找index.html,找不到再找login.html -
index index.$lang.html index.html;→ 结合map变量实现语言切换(需提前定义$lang) - 别写
index /index.html;——index后只跟文件名,不跟路径
搭配 try_files 实现真正可用的 mockup 路由
仅靠 index 不够:它对 /login(不带斜杠)这种请求完全不生效。要让所有常见 URL 都能落到对应文件上,必须加 try_files:
-
try_files $uri $uri/ /index.html;→ 先找精确文件(/login.html),再找目录(/dashboard/→ 触发index),最后 fallback 到index.html(适合 SPA mockup) -
try_files $uri $uri/ =404;→ 严格模式,只服务真实存在的文件和目录,缺失直接 404(适合纯静态线框图站) - 不要省略
$uri/中的斜杠,否则目录请求不会触发index查找
避免常见坑:权限、拼接逻辑、作用域
index 看似简单,但错一处就 403 或 404:
-
root路径末尾别加斜杠(root /var/www/mockup;✅,root /var/www/mockup/;❌) -
index不能写在if块里——Nginx 不允许,语法报错 - 如果
location /api/下配了root /data;,那么/api/users.json对应的是/data/api/users.json,不是/data/users.json - 占位图或 fallback 页面(如
/404.html)要放在root指向的目录下,并确保可被直接访问


















