在nginx的server块中使用index指令设置全局默认主页,如index index.html;,需配合root指定文件所在父目录,且可被location块内同名指令覆盖。

在 Nginx 的 server 块中设置全局默认主页文件,核心是使用 index 指令,并确保它位于 server 块作用域内(而非 http 或 location 块中),这样它会对该站点所有未显式覆盖的路径生效。
直接在 server 块里写 index 指令
这是最常用也最稳妥的方式。Nginx 不会自动识别 index.html,必须显式声明:
- 在
server { ... }大括号内部、location块之外的位置添加一行:index index.html; - 如需支持多个备选文件,用空格分隔,按顺序查找:
index index.html index.htm login.html; - 该配置对所有以
/开头且未被location单独定义的请求都起作用
配合 root 路径确保文件可访问
index 指令本身不指定文件在哪,它只决定“找哪个名字”。实际路径由 root(或 alias)决定:
-
root必须指向包含index.html的父目录,例如:root /var/www/myapp;→ 文件应位于/var/www/myapp/index.html - 如果
root写成/var/www/myapp/或/var/www/myapp/public,而文件实际不在那里,就会返回 403 或 404 - 避免在
server块中混用root和alias,后者行为更复杂,容易出错
注意作用域优先级:server vs location
index 在 server 块中定义是“全局默认”,但会被同级 location 块中的同名指令覆盖:
- 比如整个站点默认首页是
index.html,但/admin/下想用admin.php,就单独加一个location /admin/并在里面写index admin.php; - 如果没有
location覆盖,server级的index就始终生效 - 不要把
index放到http块——那样所有server都继承,不利于多站点独立管理
可选增强:用 try_files 防止 SPA 路由 404
如果是单页应用(如 Vue、React),用户刷新子路由(如 /user/profile)时可能 404。可在 location / 中补充兜底:
location / {<br> root /var/www/myapp;<br> index index.html;<br> try_files $uri $uri/ /index.html;<br>}- 这行
try_files表示:先找真实文件,再找目录,最后回退到/index.html,让前端路由接管 - 注意:这个
try_files是 location 级的,不影响 server 级index的默认行为











