在日常运维、办公、测试过程中,经常有这样的需求:服务器上的安装包、日志文件、压缩资源,需要快速给到同事或其他设备下载,不想搭复杂的ftp、网盘服务,也不想传网盘来回折腾。
这种场景下,nginx静态文件下载服务器是最优解之一。
部署简单、占用资源极低、支持浏览器直接访问下载、可目录浏览、可限速、可加密码访问,而且稳定性拉满,日常轻量文件分发完全够用。
今天分享一套自己日常在用的干净无冗余的搭建方案,适配绝大多数主流inux发行版。
很多人习惯性用ftp传文件,或者把文件上传公共网盘,其实小范围服务器文件分发,nginx优势很明显:
•轻量稳定:nginx本身常驻运行,几乎不占cpu内存,常年挂机不崩
•访问便捷:任意设备浏览器直接打开链接下载,无需客户端、无需账号软件
•支持目录浏览:自动列出文件夹所有文件,按需下载,不用一个个记文件名
•可精细化配置:限速、缓存、密码验证、防盗链都能轻松实现
•兼容性强:支持断点续传,大文件下载不容易中断失败
本次搭建主流通用环境,适配ubuntu/debian/centos主流系统:
linux服务器一台(云服务器/虚拟机均可)
已开放80端口(或自定义端口)防火墙/安全组
root或拥有sudo权限账号
yum -y install nginx安装完成后,验证服务状态:
systemctl status nginxsystemctl enable nginx #开机自启

创建目录 /data/download:
mkdir -p /data/download创建一个测试文件,用于后续验证下载功能:
echo "test file 2026" > /data/download/test.txt
vim /etc/nginx/conf.d/download.confserver {listen 80;server_name _;#站点根目录,对应我们创建的下载文件夹root /data/download;#默认首页,关闭默认索引index none;#开启目录浏览功能autoindex on;#显示文件详细时间、大小autoindex_exact_size on;autoindex_localtime on;#关闭缓存,保证文件更新后即时生效add_header Cache-Control no-cache;#大文件优化、断点续传sendfile on;tcp_nopush on;tcp_nodelay on;types_hash_max_size 2048;#可选:单文件下载限速512KB/s,防止占满带宽#limit_rate 512k;}
核心参数:
autoindex on:开启目录列表,浏览器打开就能看到所有文件点击直接下载;
limit_rate:限速功能,多人使用建议开启,避免服务器带宽被占满;
sendfile 系列:nginx静态文件传输优化,提升下载速度与稳定性;
listen 80 :监听端口80,可以根据需要进行自定义配置。
修改完配置,先校验语法是否错误(非常重要,避免Nginx启动失败)
nginx -t#显示test is successful 代表配置无误,重载生效systemctl reload nginx

浏览器输入服务器公网ip/内网ip,直接访问:
http://你的服务器ip,正常情况下,页面会列出我们刚刚创建的 test.txt 文件,点击文件即可自动下载。后续只需把需要下载的文件、文件夹放入/data/download目录,无需修改配置,刷新页面即可看到新资源。
http://192.168.2.105
七、高级配置
1.开启密码限制
如果文件不允许外网随意访问,还可以加一层基础密码认证,仅知道账号密码的人可下载。
1.安装密码工具:
yum -y install httpd-tools 
2.创建密码文件并设置账号密码:
htpasswd -c /etc/nginx/.download_pass user01执行后按提示输入两次密码,即可生成登录账号user01。
#在download.conf 的 server 块内添加如下配置开启密码验证auth_basic "请输入下载账号密码";auth_basic_user_file /etc/nginx/.download_pass;#重启后就访问systemctl reload nginx

多人同时下载大文件,容易把服务器带宽跑满,导致业务卡顿,建议开启限速。在配置文件中开启限速(取消注释即可):
#单用户限速 512KB/s,可自行修改1m代表1MB/slimit_rate 512k;#修改后重载配置,生效稳定。
防止上传脚本被恶意执行,增加安全防护,在配置中添加:
#禁止脚本执行location ~* \.(php|jsp|asp|sh|py)$ {deny all;}
优先检查:服务器安全组/防火墙是否放行80端口、nginx是否正常启动、配置是否报错。
检查autoindex on是否开启,同时确认目录权限,可临时授权测试:
chmod -R 755 /data/download
务必执行nginx -t校验语法,再systemctl reload nginx重载,不要直接重启。
九、总结
用nginx搭建静态文件下载服务器,是运维、开发日常最高频、最高性价比的轻量服务。如果大家觉得文章对你运维工作有帮助,记得点赞加关注。