nginx--第三方模块安装上传下载服务

 第三方模块安装

准备

cd /usr/local/src/
yum install git -y
git clone https://github.com/openresty/echo-nginx-module.git
cd nginx-1.24.0
yum -y install perl-devel perl-ExtUtils-Embed zlib-devel gcc-c++ libtool openssl openssl-devel

编译安装

 ./configure \--prefix=/apps/nginx \
--user=nginx --group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-http_perl_module \
--add-module=/usr/local/src/echo-nginx-module-master 模块路径make && make install

配置演示

[root@localhost nginx-1.24.0]# cat /apps/nginx/conf/conf.d/pc.conf 
server {listen 80;server_name www.fxq.com;location / {root /data/nginx/html/pc;index index.html;}location /main {index index.html;default_type text/html;echo "hello world,main-->";echo_reset_timer;echo_location /sub1;echo_location /sub2;echo "took $echo_timer_elapsed sec for total.";}location /sub1 {echo_sleep 1;echo sub1; }location /sub2 {echo_sleep 1;echo sub2;}}

传送变量

[root@localhost nginx-1.24.0]# cat /apps/nginx/conf/conf.d/pc.conf 
server {listen 80;server_name www.fxq.com;location / {root /data/nginx/html/pc;index index.html;}location /m78 {default_type text/html;echo $remote_addr;}}

下载服务

[root@localhost ~]# cat /apps/nginx/conf/conf.d/pc.conf 
server {listen 80;server_name www.fxq.com;location / {root /data/nginx/html/pc;index index.html;}location /download {root /data/nginx/html/pc;  autoindex on;     #自动索引功能autoindex_exact_size on;#计算文件确切大小(单位bytes),off只显示大概大小(单位kb、mb、gb)autoindex_localtime on; #显示本机时间而非GMT(格林威治)时间limit_rate  20k; #限制响应给客户端的传输速率,单位是bytes/second,默认值0表示无限制限速与不不限速的对⽐:}}

 上传服务

可配置http,server,location

[root@localhost ~]# cat /apps/nginx/conf/conf.d/pc.conf 
server {listen 80;server_name www.fxq.com;location / {root /data/nginx/html/pc;index index.html;client_max_body_size 100G;  #设置允许客户端上传单个文件的最大值,默认值为1mclient_body_buffer_size 100k; #用于接收每个客户端请求报文的body部分的缓冲区大小;默认16k;超出此⼤小时,其将被暂存到磁盘上的由下面client_body_temp_path指令所定义的位置client_body_temp_path /apps/nginx/logs 1 2 3; #设定存储客户端请求报文的body部分的临时存路径及子目录结构和数量,目录名为16进制的数字,使用hash之后的值从后往前截取1位、2位、2位作为⽂文件名:}
}

其他配置

keepalive_disable none | browser ...;#对哪种浏览器禁用长连接

limit_except method ... { ... },仅用于location限制客户端用除了指定的请求方法之外的其它方法

method:GET, HEAD, POST, PUT, DELETE,MKCOL, COPY, MOVE, OPTIONS, PROPFIND,PROPPATCH, LOCK, UNLOCK, PATCH

[root@localhost ~]#  cat  /apps/nginx/conf/conf.d/pc.conf 
server {listen 80;server_name www.fxq.com;location / {root /data/nginx/html/pc;index index.html;}location /upload {root /data/nginx/html/pc;index index.html;limit_except GET{allow 192.168.33.179;deny all;}}
}

 允许上传

 不允许上传

 aio

aio on | off #是否启用asynchronous file I/O(AIO)功能,需要编译开启
linux 2.6以上内核提供以下几个系统调用来支持aio:
1、SYS_io_setup:建立aio 的context
2、SYS_io_submit: 提交I/O操作请求
3、SYS_io_getevents:获取已完成的I/O事件
4、SYS_io_cancel:取消I/O操作请求
5、SYS_io_destroy:毁销aio的context

 directio

directio size | off; #directio是直接磁盘IO,默认为关闭,directio的设计初衷,它具备sendfile的基本原理,只是不使用内核cache,而是直接使用DMA,当某个文件大于等于给定大小时会生效,小于此值会使用sendfile,例如directio 4m,直接I/O最大的优点就是减少操作系统缓冲区和用户地址空间的拷贝次数,降低了了CPU的开销和内存带宽,主要使用在磁盘上有较大文件的场合,比如视频、音频等

 DMA数据传输过程

DMA数据传输过程:
1.DMA请求
     CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。
2.DMA响应:
     DMA控制器通知I/O接口开始DMA传输。
3.DMA传输:
     DMA控制器获得总线控制权后,CPU不再进行数据拷贝,由DMA控制器输出读写命令,直接控制内存与I/O接口进行数据传输。
4.DMA结束:
     完成数据传输后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号并通知CPU,CPU继续处理请求.
总结:
      DMA传输不需要CPU直接参与数据传输过程,也没有将CPU阻塞在数据拷⻉的过程中,而是通过硬件内存与I/O设备建立一条直接传送数据的通路,在数据传输过程中CPU基础处理其他请求,使CPU的工作效率大为提高。

 参数

directio_alignment 512; #设置directio的对齐方式,在大多数情况下,一个512字节的对⻬齐就足够了了,但是,在Linux下使用XFS时,需要将其增加到4K。

directio可以和sebdfile结合使用不冲突,在Linux上同时启用 AIO和sendfile时,AIO用于大于或等于directio指令中指定的大小的文件,而sendfile用于较小的文件或禁用directio的文
件,directio需要nginx开启aio,如:
location /video {
root /data/video;
index index.html;
sendfile on;
aio on;
directio 8m;
directio_alignment 512;
}

 线程

开启多线程,定义多线程读取和发送文件而不会阻塞

http://nginx.org/en/docs/http/ngx_http_core_module.html#aio

编译安装

./configure \
--prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-http_perl_module \
--with-file-aio \
--add-module=/usr/local/src/echo-nginx-module-master \
--with-threads

 nginx配置

events {worker_connections  1024;use epoll; accept_mutex on;multi_accept on;
}
thread_pool pool1 threads=16 max_queue=65535; 添加线程池
thread_pool pool2 threads=32 max_queue=65535;
[root@localhost conf]# cat /apps/nginx/conf/conf.d/pc.conf
server {listen 80;server_name www.fxq.com;location / {root /data/nginx/html/pc;index index.html;}location /video {root /data/nginx/html/pc;index index.html;sendfile on;aio threads=pool1;directio 8m;directio_alignment 4096;}
}

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

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

相关文章

ZooKeeper知识点总结及分布式锁实现

最初接触ZooKeeper是之前的一个公司的微服务项目中,涉及到Dubbo和ZooKeeper,ZooKeeper作为微服务的注册和配置中心。好了,开始介绍ZooKeeper了。 目录 1.ZooKeeper的基本概念 2.ZooKeeper的节点(ZNode) 3. ZooKeep…

机器学习之基于Tensorflow(LSTM)进行多变量时间序列预测股价

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 项目简介:机器学习之基于TensorFlow(LSTM)进行多变量时间序列预测股价 一、项目…

Python量化炒股的获取数据函数—get_fundamentals_continuously()

Python量化炒股的获取数据函数—get_fundamentals_continuously() get_fundamentals()函数只能用于查询某一交易日的股票财务数据信息,如果要查询多个交易日的股票财务数据信息,就要使用get_fundamentals_continuously()函数,语法格式如下&a…

Django数据库创建存储及管理

一、什么是ORM Django的ORM(Object-Relational Mapping)是Django框架中一个非常重要的组件。ORM可以让开发者以面向对象的方式操作数据库,而不需要直接编写SQL语句。 具体来说,Django ORM提供了以下功能: 模型定义:开发者可以在Django应用中定义Python类来表示数据库表,这些…

tensorflow报错

参考 TensorFlow binary is optimized to use available CPU instructions in performance-critical operations._this tensorflow binary is optimized to use availab-CSDN博客 解决Python中cuBLAS插件无法注册问题_unable to register cudnn factory: attempting to re-CS…

45. UE5 RPG 使用元属性(Meta Attributes)以及使用Set by Caller修改伤害

在RPG游戏中,我们是不会直接修改生命值的属性,是因为在修改角色属性时,需要获取角色的属性并进行复杂的计算,所以,我们正常情况下使用元属性(Meta Attributes)作为计算的中间的媒。在服务器上先…

【讲解下如何解决一些常见的 Composer 错误】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

Apache Dubbo知识点表格总结

Dubbo是一个高性能的Java RPC框架,它提供了一系列的功能来支持分布式系统的开发。通常用于微服务之间的服务调用,顺便提一下也是用于微服务之间调用的OpenFeign,OpenFeign是Spring Cloud体系中的一个声明式HTTP客户端,用于简化HTT…

Django知识点总结

因为最近在搞一个Python项目,使用的Django框架。所以快速学习了一下这个web框架。并做一些总结。 Django官网的介绍:Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. Built by experience…

Ex1-C6油气化工防爆轮式巡检机器人

Ex1系列防爆轮式巡检机器人整机采用防爆设计,防爆等级为Exd II CT4 Gb。机器人通过无轨3D形态导航技术,结合360度防爆云台和无线防爆充电桩,实现整套防爆标准,可广泛应用于石油、燃气、化工、冶金等II类爆炸环境中,代替…

设计模式:建造者模式

目录 一,概念 二,不使用建造者有什么麻烦 三,格式 一,概念 建造者模式(Builder Pattern)是一种创建型设计模式,用于将复杂对象的构建与其表示分离,以便同样的构建过程可以创建不同…

大模型公开可用的模型检查点或 API

文章目录 公开可用的模型检查点或 APILLaMA 变体系列大语言模型的公共 API 公开可用的模型检查点或 API 众所周知,大模型预训练是一项对计算资源要求极高的任务。因此,经过预训练的公开模型检查点(Model Checkpoint)对于推动大语言…

nginx封禁恶意IP

网络攻击时有发生 TCP洪水攻击、注入攻击、DOS等比较难防的有DDOS等 为了数据安全,防止对手爬虫恶意爬取,封禁IP 一般封禁ip linux server层面封IP:iptablesnginx层面封IP,方式多种(但req还是会打进来,让…

21-ESP32-S3实时时钟(RTC)

ESP32-S3实时时钟(RTC)的使用 ESP32-S3是一款高性能的Wi-Fi和蓝牙集成的系统级芯片(SoC),它包含一个实时时钟(RTC)模块,可以在系统的其他部分关闭时继续运行,以节省电能…

IDEA 申请学生许可证

如果你有学生账号,并且账号是 EDU 结尾的,可以申请 IDEA 的学生许可证。 有效期一年,完全免费。 在界面上输入邮件地址,然后单击按钮提交。 邮件中单击链接 JetBrains 会把一个带有链接的邮件发送到你的邮箱中。 单击邮箱中的…

Flask知识点汇总表格总结

最近接手的Python项目有两个,一个是Django项目,一个是Flask项目,Django昨天做了一个比较全面的总结,今天再就Flask做一个知识总结。我这相当于是项目驱动学习类型。 Flask是一个轻量级的Python Web应用框架,它被设计为…

智能数据分析平台待修复BUG以及待完成需求

快速跳转:何耳林毕设项目介绍-CSDN博客 BUG 1.个人图标页搜索功能,不能进行搜索 2.用户管理功能头部搜索栏有多余搜索项 3.修改用户权限等信息会影响当前管理用户 待完成需求 1.新增AI问答功能 2.图标页自动刷新功能 3.将个人页更改到头像下拉框&…

分类规则挖掘(三)

目录 四、贝叶斯分类方法(一)贝叶斯定理(二)朴素贝叶斯分类器(三)朴素贝叶斯分类方法的改进 五、其它分类方法 四、贝叶斯分类方法 贝叶斯 (Bayes) 分类方法是以贝叶斯定理为基础的一系列分类算法的总称。贝…

【C++STL详解(五)】--------list的介绍与使用

目录 前言 一、list的介绍 二、list的使用 Ⅰ.默认成员函数 1、构造函数 2、赋值重载 3、析构函数 Ⅱ、容量 1.size() Ⅲ、迭代器与遍历 1.beginend (正向迭代器) 2.rbeginrend (反向迭代器) 3.front 4.back Ⅳ、增删查改 1.push_front 2.pop_front 3.push_b…

目标跟踪难点及算法介绍

目标跟踪是计算机视觉领域的一个重要问题,目前广泛应用在体育赛事转播、安防监控和无人机、无人车、机器人等领域。 简单来说,目标跟踪就是在连续的视频序列中,建立所要跟踪物体的位置关系,得到物体完整的运动轨迹。给定图像第一帧…