一、项目目标是什么¶
原笔记先给出了一个很直观的需求:
做一个能像镜像站那样展示目录结构的视频下载站。
这个案例的核心要求有三点:
- 浏览器打开后直接显示目录结构
- 后续还能增加
svip认证功能 - 还能增加状态统计功能
其中最基础的一步,就是先把“目录结构可浏览”这件事实现出来。
二、这个场景为什么适合用 autoindex¶
原笔记明确说明,这类下载站不依赖首页文件,而是希望用户直接看到站点目录中的文件列表。
这正是 Nginx autoindex 模块的典型使用场景。
笔记中提到的几个关键指令如下:
| 指令 | 作用 |
|---|---|
autoindex on; |
开启目录索引功能 |
autoindex_localtime on; |
显示本地时间 |
autoindex_exact_size off; |
文件大小按人类可读方式显示 |
也就是说,只要站点目录存在、首页文件不存在、并且启用了 autoindex,Nginx 就能自动把目录内容列出来。
三、下载站的核心配置怎么写¶
原笔记给出的站点信息是:
- 域名:
v.oldboylinux.cn - 站点目录:
/app/code/v/
对应的配置示例如下:
server {
listen 80;
server_name v.oldboylinux.cn;
root /app/code/v;
error_log /var/log/nginx/v-error.log notice;
access_log /var/log/nginx/v-access.log main;
autoindex on;
autoindex_localtime on;
autoindex_exact_size off;
location / {
index index.html;
}
}
这份配置里最值得注意的点有:
server_name用来接收下载站域名请求root指向实际文件目录error_log和access_log单独指定了站点日志autoindex相关指令决定了目录列表的展示方式
四、如何准备测试文件¶
原笔记并没有要求先放一个完整网站,而是直接在目录里创建测试文件:
[root@oldboy01 conf.d]# mkdir -p /app/code/v/
[root@oldboy01 conf.d]# touch /app/code/v/8k-blue-ray{01..10}.avi
这种做法非常适合验证目录索引站点:
- 不需要写页面代码
- 只要目录下有文件
- 浏览器就能直接看到可浏览的文件列表
五、配置完成后如何验证¶
原笔记采用的是一套很标准的检查流程。
先检查语法:
[root@oldboy01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
再重载 Nginx:
[root@oldboy01 conf.d]# systemctl reload nginx
然后在 Windows 主机里添加 hosts 解析:
192.168.1.20 v.oldboylinux.cn
最后用浏览器访问:
http://v.oldboylinux.cn/
此时页面就会像目录索引站一样,把站点目录里的文件列出来。
六、这个案例背后体现了哪些 Nginx 思路¶
虽然这个案例看起来只是“列目录”,但它已经把几个核心概念串起来了:
- 用
server_name和域名绑定一个独立站点 - 用
root指向下载资源所在目录 - 用独立日志记录该站点的访问和错误
- 用
autoindex替代传统首页文件输出
这类站点特别适合:
- 文件下载页
- 软件仓库镜像页
- 资源归档页
七、小结¶
这个下载站案例说明,Nginx 不一定只能托管普通网页。
在没有首页文件的情况下,通过 autoindex 一样可以快速搭建一个可浏览目录的下载站,而且配置简单、验证直接,很适合拿来理解目录索引型站点的工作方式。