nginx开启目录下载
nginx 开启目录下载
概要
- 使用场景
- 修改配置文件以及参数含义
- 启动nginx 测试下载
1. 使用场景
需要对用户提供文件下载功能,比如不同版本的软件列表,或者对外提供的一些公开的报表下载
2.版本和配置文件
2.1 软件版本
[root@localhost nginx]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@localhost nginx]# yum install nginx -y
[root@localhost nginx]# nginx -version
nginx version: nginx/1.20.1
2.2 创建目录以及添加配置文件
在conf.d目录下添加配置文件download.conf
# 创建文件存放目录
mkdir /data/download -p
# 添加nginx的配置文件
cd /etc/nginx/conf.d/
touch download.conf
# 将下面的内容复制到配置download.conf
### 请注意: 实际应用请修改实际的端口和路径
### 此处示例 服务器 文件存放 /data/download, 访问路径为 ip:8082/download
server {
# 监听端口, 按照自己的实际情况填写
listen 8082;
# 监听地址, 按照自己的实际情况填写
server_name localhost;
# 访问日志, 按照自己的实际情况填写
access_log /data/download.log;
# 匹配的访问路径, 因此这里浏览器访问路径为url:port/download
location /download {
charset utf-8,gbk,gb2312;
root /data/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
# # 允许客户端请求的最大单文件字节数
client_max_body_size 100m;
# 缓冲区代理缓冲用户端请求的最大字节数
client_body_buffer_size 128k;
# 后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_timeout 1200;
# 连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理
proxy_read_timeout 1200;
# 后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
proxy_send_timeout 6000;
# Nginx使用该大小申请read_buf, 即大小指定了 upstream header 最大长度,
proxy_buffer_size 32k;
# 开辟256个长度为8k大小的read_buf用来存储body
# 默认值:proxy_buffers 256 8k
proxy_buffers 4 64k;
# 如果完整数据大小小于busy_buffer大小,当数据传输完成后,马上传给客户端;
# 如果完整数据大小不小于busy_buffer大小,则装满busy_buffer后,马上传给客户端;
proxy_busy_buffers_size 128k;
# 是一次访问能写入的临时文件的大小
# 默认是proxy_buffer_size和proxy_buffers中设置的缓冲区大小的2倍,Linux下一般是8k
proxy_temp_file_write_size 128k;
# 开启目录
autoindex on;
# 显示出文件的大概大小,单位是kB或者MB或者GB
autoindex_exact_size off;
# 改为on后,显示的文件时间为文件的服务器时间
autoindex_localtime on;
# 达到最大带宽时开始限制
# limit_rate_after 15m;
# 添加允许访问下载 IP 地址段
# allow 192.168.1.0/24;
# allow 172.17.0.0/16;
# deny all;
if ($request_filename ~* ^.*?\.(txt)$){
add_header Content-Disposition 'attachment';
add_header Content-Type: 'APPLICATION/OCTET-STREAM';}
}
}
2.3 启动nginx 测试下载
# 启动nginx
systemctl restart nginx
# 使用浏览器访问(按照自己的实际地址访问)
ip:8082/download