使用 Nginx 搭建文件下载服务器
作者:mmseoamin日期:2023-12-20

文章目录

    • 一、基础环境
    • 二、适用场景
    • 三、方法和步骤
    • 四、其他说明

        版权声明:本文为CSDN博主「杨群」的原创文章,遵循 CC 4.0 BY-SA版权协议,于2023年8月27日首发于CSDN,转载请附上原文出处链接及本声明。

        原文链接:https://blog.csdn.net/u011046671/article/details/132526618

      一、基础环境

        操作系统:microsoft Windows 10 专业版

        nginx 版本:1.25.1

      二、适用场景

        使用 nginx 搭建简单的文件下载服务器。

      三、方法和步骤

        配置文件如下:

      # 工作进程:根据需要进行设置,一般设置为CPU核心数的2倍或直接设置为auto由程序自动调整
      worker_processes 1;
      events {
          # 每个工作进程的连接数,默认为1024个
          worker_connections 1024;
      }
      http {
          include mime.types;
          default_type application/octet-stream;
          sendfile on;
          keepalive_timeout 65;
          gzip on;
          server {
              listen 80;
              server_name localhost;
              charset utf-8;
              root D:/Xufengsoft; # 文件存放目录
              location / {
                  autoindex on; # 启用自动首页功能
                  autoindex_format html; # 首页格式为HTML
                  autoindex_exact_size on; # 文件大小自动换算
                  autoindex_localtime on; # 按照服务器时间显示文件时间
                  default_type application/octet-stream;# 将当前目录中所有文件的默认MIME类型设置为
                  # application/octet-stream
                  if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$) {
                      # 当文件格式为上述格式时,将头字段属性Content-Disposition的值设置为"attachment"
                      add_header Content-Disposition: 'attachment;';
                  }
                  sendfile on; # 开启零复制文件传输功能
                  sendfile_max_chunk 1m; # 每个sendfile调用的最大传输量为1MB
                  tcp_nopush on; # 启用最小传输限制功能
                  aio on; # 启用异步传输
                  directio 5m; # 当文件大于5MB时以直接读取磁盘的方式读取文件
                  directio_alignment 4096; # 与磁盘的文件系统对齐
                  output_buffers 4 32k; # 文件输出的缓冲区大小为128KB
                  limit_rate 1024m; # 限制下载速度为1MB
                  limit_rate_after 1024m; # 当客户端下载速度达到2MB时进入限速模式
                  max_ranges 4096; # 客户端执行范围读取的最大值是4096B
                  send_timeout 20s; # 客户端引发传输超时时间为20s
                  postpone_output 2048; # 当缓冲区的数据达到2048B时再向客户端发送
                  chunked_transfer_encoding on; # 启用分块传输标识
              }
          }
      }
      

      四、其他说明

        页面有点丑,在 Linux 平台上有美化的方法,在 Windows 平台没有找到美化的方法。

        版权声明:本文为CSDN博主「杨群」的原创文章,遵循CC 4.0 BY-SA版权协议,于2023年8月27日首发于CSDN,转载请附上原文出处链接及本声明。

        原文链接:https://blog.csdn.net/u011046671/article/details/132526618