用nginx autoindex搭内网镜像源需四点同步生效:关闭index指令防干扰、开启autoindex on、配置exact_size/localtime/charset优化显示、用alias而非root映射路径;再加基础认证、ip限制和限速可提升安全性与稳定性。

用 Nginx 的 autoindex 模块搭内网镜像源,核心是让目录可浏览、中文不乱码、大小和时间显示合理,且不被 index.html 干扰。它不是为公网展示设计的,但对内网共享 ISO、RPM 包、SDK 等静态资源非常高效,无需数据库或后端程序。
关键配置项必须设对
只写 autoindex on; 远不够,页面会简陋且常出错。以下四点要同时生效:
-
关闭索引页干扰:删掉或注释掉 location 块里的
index指令(如index index.html index.htm;),否则 Nginx 优先返回 index.html 而非列表 -
开启目录索引:确保
autoindex on;出现在对应location块中,比如location /centos/ { ... autoindex on; ... } -
优化显示格式:加
autoindex_exact_size off;(显示 K/M 单位而非字节)、autoindex_localtime on;(用服务器本地时间,非 GMT)、charset utf-8;(解决中文文件名乱码) -
路径映射建议用 alias:不用
root,改用alias /data/mirrors/centos/;,避免路径拼接错误;例如访问/centos/就直接映射到磁盘该目录
适配镜像源的典型结构
内网镜像站通常按发行版或用途分目录,比如 /centos/、/ubuntu/、/pip/。配置时可为每个目录单独写 location 块:
- 挂载 ISO 后,用
mount -o loop CentOS-7-x86_64-DVD.iso /data/mirrors/centos/,再通过alias暴露 - 同步 YUM 仓库后(如用
reposync),把生成的repodata/目录保留在顶层,Nginx 可自动识别并支持yum makecache - 若需限速防带宽打满,加
limit_rate 2m;(单位为字节/秒,支持 k/m)
基础安全与访问控制
内网不等于无风险,简单防护能避免误操作或越权浏览:
-
启用基础认证:在对应
location块里加auth_basic "Mirror Access"; auth_basic_user_file /etc/nginx/.htpasswd;,用htpasswd生成用户文件 -
限制 IP 范围(可选):加
allow 192.168.10.0/24;和deny all;,只允许可信网段访问 -
禁用危险方法:加
limit_except GET HEAD { deny all; },禁止 PUT/DELETE 等非读操作
验证与调试要点
配置完别急着 reload,先检查逻辑是否闭环:
- 用
nginx -t验证语法,确认无 warning 或 error - 浏览器访问目录路径(如
http://192.168.10.5/centos/),看能否列出文件、中文名是否正常、时间是否为本地时区、大小是否带单位 - 用
curl -I http://192.168.10.5/centos/repodata/repomd.xml检查关键元数据能否直链获取,这是 YUM 客户端依赖的 - 客户端配置 repo 文件时,
baseurl必须以/结尾(如baseurl=http://192.168.10.5/centos/),否则路径拼接会出错











