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
posted @ 2022-04-01 23:35  レモン  阅读(577)  评论(0编辑  收藏  举报
Title