Nginx默认禁止目录浏览,开启需在location中配置autoindex on并严格限制IP、禁用敏感路径、关闭类型猜测、启用身份验证;关闭则删除或注释autoindex on后重载配置,并实测验证。

Linux下Nginx默认禁止目录浏览,开启需手动配置,但存在安全风险;关闭则只需移除或注释相关指令。关键在明确是否真有浏览需求,并限制访问范围。
开启目录浏览:仅限必要场景,必须加访问控制
若确需用户查看目录内容(如内部文件共享、静态资源索引),需在对应 location 块中启用 autoindex on,并强制配合以下措施:
- 限定 IP 范围:用 allow 和 deny 限制可访问的内网段或特定 IP,例如 allow 192.168.1.0/24; 后跟 deny all;
- 禁用敏感路径:避免对
/etc、/var/log、项目源码目录等启用 autoindex - 关闭文件类型猜测:添加 autoindex_exact_size off; 和 autoindex_format html;(默认),不建议用 json 或 xml 格式对外暴露结构
- 搭配身份验证:在同 location 中加入 auth_basic 和 auth_basic_user_file,强制登录
关闭目录浏览:推荐默认策略,一步到位
生产环境应默认关闭。检查 Nginx 配置文件(如 /etc/nginx/conf.d/default.conf 或站点配置)中所有 location 块,确保不含 autoindex on;。若存在,直接删除该行或改为 autoindex off;(off 是默认值,写不写效果相同)。修改后执行:
sudo nginx -t && sudo systemctl reload nginx
验证是否生效:别只信配置,要实测
配置生效后,用浏览器或 curl 访问一个无 index 文件的目录(如 http://your-domain.com/assets/):
- 返回 403 Forbidden 或 404 Not Found → 已关闭(符合预期)
- 返回带文件列表的 HTML 页面 → 仍开启,需回查配置位置(注意:server 块、include 的子配置、多个 location 匹配顺序都可能影响结果)
- 使用 curl -I http://localhost/assets/ 查看响应头,确认无异常 Server 信息泄露
替代方案:比目录浏览更安全的实践
真有文件分发需求时,优先考虑更可控的方式:
- 为每个需共享的目录单独生成静态
index.html,用普通页面展示链接,不依赖 Nginx 自动生成 - 用轻量工具如 polly 或 Firefox Send(已归档,可自建类似服务)提供带过期、密码保护的临时下载页
- 对接对象存储(如 MinIO),通过预签名 URL 分发,完全规避 Web 服务器目录暴露










