Ubuntu搭建nginx做文件下载服务器
搭建 Nginx 文件下载服务器
1. 安装 Nginx
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx
检查服务:
systemctl status nginx
2. 创建下载目录
建议把文件放在 /srv/downloads:
sudo install -d -m 0755 -o root -g www-data /srv/downloads
sudo cp /你的文件路径/example.zip /srv/downloads/
修正已有文件的读取权限:
sudo find /srv/downloads -type d -exec chmod 755 {} \;
sudo find /srv/downloads -type f -exec chmod 644 {} \;
Nginx 只需要读取权限,不建议把目录设置成 777。
3. 创建 Nginx 配置
sudo nano /etc/nginx/sites-available/download-server
填入:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
charset utf-8;
location = / {
return 302 /download/;
}
location /download/ {
alias /srv/downloads/;
# 开启目录列表
autoindex on;
# 使用 KB、MB、GB 显示文件大小
autoindex_exact_size off;
# 显示服务器本地时间
autoindex_localtime on;
# 提高静态文件传输效率
sendfile on;
tcp_nopush on;
# 仅允许下载和查看
limit_except GET {
deny all;
}
}
}
注意:location /download/ 和 alias /srv/downloads/ 末尾的 / 都要保留。目录列表相关指令可参考 Nginx autoindex 官方文档。
4. 启用配置
如果这台服务器专门用于文件下载,可以禁用默认站点:
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/download-server /etc/nginx/sites-enabled/download-server
检查配置并重载:
sudo nginx -t
sudo systemctl reload nginx
Ubuntu 官方也建议在修改配置后先测试,再重新加载 Nginx:Ubuntu Nginx 配置文档。
5. 开放防火墙
如果启用了 UFW:
sudo ufw allow 'Nginx HTTP'
sudo ufw status
如果是云服务器,还需要在阿里云、腾讯云、AWS 等平台的安全组中放行 TCP 80 端口。
现在访问:
http://服务器IP/download/
具体文件地址例如:
http://服务器IP/download/example.zip
可选:增加密码保护
先安装密码工具:
sudo apt install -y apache2-utils
sudo htpasswd -c /etc/nginx/.downloads.htpasswd downloaduser
然后在 location /download/ 内加入:
auth_basic "File Download";
auth_basic_user_file /etc/nginx/.downloads.htpasswd;
再次应用配置:
sudo nginx -t
sudo systemctl reload nginx
密码验证应配合 HTTPS 使用,否则密码可能通过明文 HTTP 传输。
常见问题
- 出现
403 Forbidden:通常是/srv/downloads或其上级目录缺少读取、进入权限。 - 出现
404 Not Found:检查location和alias末尾的斜杠。 - 外网无法访问:检查 UFW、云服务器安全组、路由器端口映射。
- 中文文件名乱码:确认配置中有
charset utf-8;,文件名本身也应使用 UTF-8。 - 想限制下载速度:可以在
location中增加limit_rate 5m;,表示单个连接约限制为 5 MB/s。sendfile和limit_rate的具体行为见 Nginx 核心模块文档。
`
如果 Xftp 上传到 /srv/downloads 提示“权限不足”,在 Ubuntu 上执行:
sudo chown -R "$USER":www-data /srv/downloads
sudo find /srv/downloads -type d -exec chmod 755 {} \;
sudo find /srv/downloads -type f -exec chmod 644 {} \;

浙公网安备 33010602011771号