Nginx之文件下载服务器

1.概述

        在对外分享文件时,利用Nginx搭建一个简单的下 载文件管理服务器,文件分享就会变得非常方便。利 用Nginx的诸多内置指令可实现自动生成下载文件列表 页、限制下载带宽等功能。配置样例如下:

    server {listen 8080;server_name  localhost;charset utf-8;root    /opt/nginx-web/files;             # 文件存放目录# 下载location / {autoindex on;                         # 启用自动首页功能autoindex_format html;                # 首页格式为HTMLautoindex_exact_size off;             # 文件大小自动换算autoindex_localtime on;               # 按照服务器时间显示文件时间default_type application/octet-stream;# 将当前目录中所有文件的默认MIME类型设置为# application/octet-streamif ($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调用的最大传输量为1MBtcp_nopush on;                        # 启用最小传输限制功能aio on;                               # 启用异步传输directio 5m;                          # 当文件大于5MB时以直接读取磁盘的方式读取文件directio_alignment 4096;              # 与磁盘的文件系统对齐output_buffers 4 32k;                 # 文件输出的缓冲区大小为128KBlimit_rate 1m;                        # 限制下载速度为1MBlimit_rate_after 2m;                  # 当客户端下载速度达到2MB时进入限速模式max_ranges 4096;                      # 客户端执行范围读取的最大值是4096Bsend_timeout 20s;                     # 客户端引发传输超时时间为20spostpone_output 2048;                 # 当缓冲区的数据达到2048B时再向客户端发送chunked_transfer_encoding on;         # 启用分块传输标识}}

2.实验

        2.1 nginx配置文件

[root@ansible01 nginx]# cat /etc/nginx/nginx.conf|grep -v "^$"|grep -v "^#"
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {worker_connections 1024;
}
http {log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 4096;include             /etc/nginx/mime.types;default_type        application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;# Load configuration files for the default server block.server {listen 8080;server_name  11.0.1.18;charset utf-8;root    /opt/nginx-web/files;             # 文件存放目录# 下载location / {autoindex on;                         # 启用自动首页功能autoindex_format html;                # 首页格式为HTMLautoindex_exact_size off;             # 文件大小自动换算autoindex_localtime on;               # 按照服务器时间显示文件时间default_type application/octet-stream;# 将当前目录中所有文件的默认MIME类型设置为# application/octet-streamif ($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调用的最大传输量为1MBtcp_nopush on;                        # 启用最小传输限制功能aio on;                               # 启用异步传输directio 5m;                          # 当文件大于5MB时以直接读取磁盘的方式读取文件directio_alignment 4096;              # 与磁盘的文件系统对齐output_buffers 4 32k;                 # 文件输出的缓冲区大小为128KBlimit_rate 1m;                        # 限制下载速度为1MBlimit_rate_after 2m;                  # 当客户端下载速度达到2MB时进入限速模式max_ranges 4096;                      # 客户端执行范围读取的最大值是4096Bsend_timeout 20s;                     # 客户端引发传输超时时间为20spostpone_output 2048;                 # 当缓冲区的数据达到2048B时再向客户端发送chunked_transfer_encoding on;         # 启用分块传输标识}}
}

        2.2 共享文件目录

[root@ansible01 files]# tree /opt/nginx-web/files/
/opt/nginx-web/files/
├── doc
└── txt2 directories, 0 files

        2.3 测试

        直接访问http://11.0.1.18:8080

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有了MES、ERP,质量管理为什么还需要QMS?

在制造业,质量管理始终是企业管理中永恒的主题。品质管理要想做得更好,企业必须掌握足够多、足够有用的数据和信息,实现质量管理信息化。很多中小企业也很困惑,是否有必要上线QMS质量管理系统? 一、为什么企业需要QMS的…

Graph RAG 的力量:智能搜索的未来

随着世界越来越依赖数据,对准确、高效的搜索技术的需求从未如此高涨。传统搜索引擎虽然功能强大,但往往难以满足用户复杂而细微的需求,尤其是在处理长尾查询或专业领域时。Graph RAG(检索增强生成)正是在这种情况下应运…

Python-Socket网络编程简单示例

# TCP 服务端程序 server.py # 导入socket 库 from socket import *# 主机地址为空字符串,表示绑定本机所有网络接口ip地址 # 等待客户端来连接 IP # 端口号 PORT 50000 # 定义一次从socket缓冲区最多读入512个字节数据 BUFLEN 512# 实例化一个socket对象 # 参…

第1讲:创建vite工程,使用框架为Vanilla时,语言是typescript,修改http端口的方法

直接在项目根目录创建 vite.config.ts文件。 在该文件中添加内容: import { defineConfig } from vite;export default defineConfig({server: {port: 7777,}, });最后尝试运行package.json中的Debug

AI大模型的TTS评测

L-MTL(Large Multi-Task Learning)Models 是一种大规模多任务学习模型,通过结合 Mixture of Experts(MMoE)框架与 Transformer 模型,实现对 TTS(Text-to-Speech)系统中多个评估指标的…

今日分享丨点亮这四个技能,你也可以成为可视化专家

引言 以大数据、人工智能等为代表的新质生产力时代已悄然而至,央企、国企逐步意识到数据资源展示对于经营管理的重要性和紧迫性。数据可视化成为连接用户与数据的桥梁,藉由设计师的巧手,把复杂抽象的数据以基于管理需求,转化为直…

PAT B1018.锤子剪刀布

题目描述 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图3-1所示。 现给出两人的交锋记录,请统计双方的胜、平、负次数,并给出双方分别出什么手势的胜算最大。输入格式 第一行给出正整数N(≤10),即双方交锋的次数。随后N行,每行给…

探索Web Components

title: 探索Web Components date: 2024/6/16 updated: 2024/6/16 author: cmdragon excerpt: 这篇文章介绍了Web Components技术,它允许开发者创建可复用、封装良好的自定义HTML元素,并直接在浏览器中运行,无需依赖外部库。通过组合HTML模…

Top10在线音频剪辑软件,你了解几款?(免费分享)

多年来,随着音乐制作人和音频工程师的需求不断增长,音频剪辑软件领域经历了巨大的发展。最新的音频剪辑软件提供了从基本录制到最终发布所需的一切功能。其中一些软件专为播客设计,一些软件是免费的,并且一些软件提供了出色的音效…

python读取excel中的图片超链接,批量下载到本地

1、代码 import xlrd import requestsread_path C:\\Users\\asus\\Desktop\\大法\\公务员\\国考\\行测\\1-推理判断\\URLs.xlsx bk xlrd.open_workbook(read_path) shxrange range(bk.nsheets) sh bk.sheet_by_name("Sheet2") nrows sh.nrows ncols sh.ncols …

【自撰写】【国际象棋入门】第6课 常见术语分析(一)吃双和抽将

第6课 常见术语分析(一)吃双和抽将 本次课中,我们介绍几种最为常见和常用的(单步棋形成)的局面、术语并对其进行简单的分析。一般说来,这些局面都会给予一方以“立竿见影”的优势,或者引向之后…

“鸿蒙开发之图片下载”--案例问题整理

鸿蒙开发之图片下载 关于以上连接中案例demo使用问题整理如下图 而且在写这个案例的时候记得添加权限 "requestPermissions":[{"name" : "ohos.permission.INTERNET"}]

Java多线程设计模式之不可变对象(Immutable Object)模式

简介 多线程共享变量的情况下,为了保证数据一致性,往往需要对这些变量的访问进行加锁。而锁本身又会带来一些问题和开销。Immutable Object模式使得我们可以在不加锁的情况下,既保证共享变量访问的线程安全,又能避免引入锁可能带…

20240619在飞凌OK3588-C的Linux R4系统下查找MIPI YUV摄像头的csi size err

20240619在飞凌OK3588-C的Linux R4系统下查找MIPI YUV摄像头的csi size err 2024/6/19 14:00 缘起,公司使用LVDS OUT的机芯,4LANE的LVDS输出。1920x108030分辨率(1080p/30) 通过FPGA转换为2LANE的MIPI OUT之后进RK3588/OK3588-C。…

sqlite3指令操作-linux

1.查看当前数据库位置 2.查看当前数据库文件下有哪些表 3.显示 某表创建时的SQL语句 4.打开、关闭显示列标题; 5.列对齐显示 6.列以‘,’分隔显示 .separator 7.查询表信息 8.插入消息 9.删除某一行内容 10.修改某行某列内容 11.修改表名字 alter tab…

浅谈golang字符编码

1、 Golang 字符编码 Golang 的代码是由 Unicode 字符组成的,并由 Unicode 编码规范中的 UTF-8 编码格式进行编码并存储。 Unicode 是编码字符集,囊括了当今世界使用的全部语言和符号的字符。有三种编码形式:UTF-8,UTF-16&#…

2024年项目进度控制软件大比拼:找出适合您团队的最佳工具

本文整理了9大热门项目进度控制软件:PingCode、Worktile、Monday.com、Asana、Trello、Jira、ClickUp、Wrike、Zoho Projects。并且进行详细介绍对比。 在项目管理工具的选择上,不同规模的团队有着各自的需求和偏好。例如,小型团队倾向于选择…

新手搭建Magic-API

项目场景: 我本是一个前端和GIS开发工程师,但新单位并没有配置完整的开发团队,确切说目前只有我一个人做开发,那么肯定避免不了要研究下后端。最近有一个小程序要开发,管理平台我直接用的fastAdminthinkphp写完了页面…

终极版本的Typora上传到博客园和csdn

激活插件 下载网址是这个: https://codeload.github.com/obgnail/typora_plugin/zip/refs/tags/1.9.4 解压之后这样的: 解压之后将plugin,复制到自己的安装目录下的resources 点击安装即可: 更改配置文件 "dependencies&q…

XL5300 dTOF测距模块 加镜头后可达7.6米测距距离 ±4%测距精度

XL5300 直接飞行时间(dToF)传感器是一个整体方案dTOF 模组,应用设计简单。片内集成了单光子雪崩二极管(SPAD)接收阵列以及VCSEL激光发射器。利用自主研发的 SPAD 和独特的ToF 采集与处理技术,XL5300模块可实…