Nginx 静态资源服务器与目录浏览
Nginx 不仅是一个高性能的反向代理服务器,也非常适合作为静态资源服务器。通过 autoindex 模块,你可以快速搭建一个功能完备的文件下载站。
📂 开启目录浏览 (Download Station)
当目录下没有 index.html 时,默认会返回 403 错误。开启 autoindex 后,Nginx 会自动生成目录列表。
核心配置示例
nginx
server {
listen 80;
server_name download.example.com;
location /files/ {
root /data/share/;
# 开启目录浏览
autoindex on;
# 优化显示效果
autoindex_exact_size off; # 关闭精确字节数,显示 MB/GB
autoindex_localtime on; # 显示文件本地时间而非 GMT 时间
# 防止中文文件名乱码
charset utf-8,gbk;
}
}🛠️ 参数详解
| 指令 | 默认值 | 说明 |
|---|---|---|
autoindex | off | 是否开启目录列表生成功能。 |
autoindex_exact_size | on | 为 on 时显示确切字节数;为 off 时显示友好的 KB/MB/GB。 |
autoindex_format | html | 列表显示格式,可选 html、xml、json 或 jsonp。 |
autoindex_localtime | off | 是否显示服务器本地时间,默认为 GMT 时间。 |
🎨 进阶技巧
1. 限制下载速度
为了防止某个用户占用过多带宽,可以配合 limit_rate 使用:
nginx
location /files/ {
autoindex on;
limit_rate 500k; # 限制每个连接的下载速度为 500KB/s
}2. 安全加固 (加把锁)
目录浏览功能会暴露服务器文件结构,建议在非公开目录下添加认证,避免陌生 IP 狂刷。
Nginx 配置示例:
nginx
location /files/ {
autoindex on;
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}生成密码文件:
你需要使用 htpasswd 工具(通常由 httpd-tools 或 apache2-utils 提供)来创建加密的密码文件:
bash
# 1. 安装工具
yum install httpd-tools # CentOS
apt install apache2-utils # Ubuntu/Debian
# 2. 生成文件并添加用户 ftp
# -c 代表 create (首次创建文件时使用),之后添加用户无需 -c
htpasswd -c /etc/nginx/.htpasswd ftp⚠️ 注意事项
- 权限问题:确保 Nginx 运行用户(通常是
nginx或www-data)对共享目录有读取权限(r)和进入目录的执行权限(x)。 - 安全性:严禁在 Web 源码根目录或包含敏感配置(如
.env)的目录下开启autoindex。 - 冲突:如果目录下存在
index指令指定的文件(如index.html),Nginx 会优先显示该文件而不会生成目录列表。
