Nginx的index指令可指定任意后缀默认文件(如index.json、index.md),只要文件存在、路径正确、权限可读且MIME类型已注册;需配合types块定义对应Content-Type,避免浏览器误下载或解析失败。
可以直接用 index 指令指定非 HTML 文件作为默认首页,比如 index.json、index.md 或 index.txt —— Nginx 本身不限制后缀,只认文件是否存在、路径是否正确、Nginx 是否有权限读取。
Nginx 返回文件时会根据扩展名自动设置 Content-Type,如果类型未定义,浏览器可能下载文件或显示为纯文本。需检查 /etc/nginx/mime.types(或主配置中 types 块)是否包含对应映射:
application/json json;(现代 Nginx 默认已有)text/markdown md;(若用 .md,需手动添加)text/plain txt;(通常已存在)修改后执行 nginx -s reload 生效。
指令写法无限制,例如:
index index.json index.md index.txt;index api.yaml;(单个也合法)关键在于物理路径匹配:
若 root /var/www/api;,访问 / 时 Nginx 就去查 /var/www/api/index.json;
若 location /docs/ { root /opt/docs; index README.md; },访问 /docs/ 就返回 /opt/docs/docs/README.md(注意 root 拼接逻辑)。
以下情况会导致 index 不生效:
try_files $uri /index.json; —— 这会绕过 index 指令,直接内部重定向到固定路径autoindex on; 开启了目录列表,且没有 index 指令,Nginx 就不会尝试找默认文件(13: Permission denied)
/(如访问 /api 而非 /api/),index 不触发不用重启服务,直接测试:
curl -I https://your.site/ 查看 Content-Type 和状态码curl https://your.site/ 看返回内容是否是你写的 JSON/MD/TXT/var/log/nginx/error.log,搜索 “open() … failed”,定位路径或权限问题