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;  #设置允许客户端上传单个文件的最大值,默认值为1m
     client_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.mfbz.cn/a/589081.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Javascript:Web APIs(一)

Javascript基础(一) Javascript基础(二) Javascript基础(三) Javascript基础已经结束,接下来我们将进入到整个Web API学习中,在此,我们将学习DOM操作,基本的…

32.Docker认识

Docker介绍 Docker是一个快速交付应用,运行应用的技术。 1.可以将程序、依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统。 2.运行时利用沙箱机制行程隔离容器,各个应用互不干扰。 3.启动、移除都可以通过一行命令完成&am…

多线程基础知识(全面):创建线程、线程状态如何变化、wait()、notify()、sleep()、停止线程

文章目录 一、创建线程的四种方式1.1 继承Thread类1.2 实现runnable接口1.3 实现Callable接口1.4 线程池创建线程1.5 补充:runnable、callable都可以创建线程,有什么区别;run()和 start()有什么区别 二、线程包括哪些状态、状态之间如何变化2…

40.WEB渗透测试-信息收集-域名、指纹收集(2)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:39.WEB渗透测试-信息收集-域名、指纹收集(1) oneforall的安装前置…

《深入解析Windows操作系统》第5章节学习笔记

1、每个Windows进程都是由一个执行体进程EPROCESS结构来表示的,EPROCESS和相关数据结构位于系统空间,但是进程环境控制块PEB是个例外,它位于进程空间地址中(因为它包含了一些需要由用户模式代码来修改的信息)。对于每一…

『跨端框架』Flutter环境搭建

『跨端框架』Flutter环境搭建 资源网站简介跨平台高性能发展历程跨平台框架的比较成功案例 环境搭建(windows)基础环境搭建Windows下的安卓环境搭建Mac下的安卓环境配置资源镜像JDKAndroid StudioFlutter SDK问题一问题二问题三修改项目中的Flutter版本 …

Java中的字符流

字符流字节流编码表 Java为什么可以区分字母和汉字 package day3; ​ import java.io.UnsupportedEncodingException; import java.lang.reflect.Array; import java.util.Arrays; ​ public class Test {public static void main(String[] args) throws UnsupportedEncoding…

【Mybatis 】什么是mybatis?如何在普通项目中使用?(超详细建议收藏)

文章目录 mybatis第一章1、什么是mybatis2、idea中配置环境3、创建一个普通工程 第二章1、mybatis基本步骤2、导入log4j日志3、使用lombok注解4、mapper.xml文件详情1、parameterType属性2、resultType属性 5、对实体包进行扫描6、SQL语句中的占位符及转义符7、接口方法包含多个…

Flutter笔记:Widgets Easier组件库(5)使用加减器

Flutter笔记 Widgets Easier组件库(5):使用加减器 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress…

【校招】校园招聘中的签约环节,面完HR后的流程(意向书,offer选择与三方协议)

【校招】校园招聘中的签约环节,面完HR后的流程(意向书,offer选择与三方协议) 文章目录 一、面完HR后的流程1、口头oc、谈薪(两个电话)2、邮件意向书、带薪offer(两封邮件)3、签三方&…

算法训练营第十三天 | LeetCode 239 滑动窗口最大值、LeetCode 347 前K个高频元素

LeetCode 239 滑动窗口最大值 本体初始思路是这样的,首先看下给定数组长度和维持一个滑动窗口所需要花费的时间复杂度之间的关系。初步判断是还行的,当然后面被样例打脸了。需要更新成优先队列的解法。原本的解法能通过37/51和46/51的测试用例。但这还不…

基于Spring Boot的校园疫情防控系统设计与实现

基于Spring Boot的校园疫情防控系统设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 管理员登录首页界面图,管理员进入校园疫…

AI大模型探索之路-训练篇10:大语言模型Transformer库-Tokenizer组件实践

系列篇章💥 AI大模型探索之路-训练篇1:大语言模型微调基础认知 AI大模型探索之路-训练篇2:大语言模型预训练基础认知 AI大模型探索之路-训练篇3:大语言模型全景解读 AI大模型探索之路-训练篇4:大语言模型训练数据集概…

msmpi 高性能并行计算 移植并行细胞自动机报错

报错情况如图 代码来源 元胞自动机生命游戏C语言并行实现 – OmegaXYZ 稍微修改,因为相对路径在 msmpi 10.1.1 中失效 Microsoft Windows [版本 10.0.22000.2538] (c) Microsoft Corporation。保留所有权利。C:\Users\ASUS>mpiexec -n 9 "C:\Users\ASUS\D…

四信数字孪生水库解决方案,加快构建现代化水库运行管理矩阵

近年,水利部先后出台《关于加快构建现代化水库运行管理矩阵的指导意见》与《构建现代化水库运行管理矩阵先行先试工作方案》等文件,明确总体要求及试点水库、先行区域建设技术要求等,为全面推进现代化水库运行管理矩阵建设工作提供依据。 《2…

自定义Maven项目模板Archetype,快速创建模板项目。

自定义Archetype 创建好模板项目,在项目根目录执行命令对模板做出响应调整将模板安装到本地、远程仓库使用自定义模板 创建好模板项目,在项目根目录执行命令 mvn archetype:create-from-project对模板做出响应调整 如果是多模块项目,可能需…

【数据结构】:链表的带环问题

🎁个人主页:我们的五年 🔍系列专栏:数据结构 🌷追光的人,终会万丈光芒 前言: 链表的带环问题在链表中是一类比较难的问题,它对我们的思维有一个比较高的要求,但是这一类…

【模板】前缀和

原题链接:登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 前缀和模板题。 前缀和中数组下标为1~n。 前缀和:pre[i]pre[i-1]a[i]; 某段区间 [l,r]的和:pre[r]-pre[l-1] 3.…

【C语言】atoi和atof函数的使用

人生应该树立目标,否则你的精力会白白浪费。💓💓💓 目录 •🌙知识回顾 🍋知识点一:atoi函数的使用和实现 • 🌰1.函数介绍 • 🌰2.代码演示 • 🌰3.atoi函数的…

【高校科研前沿】云南大学陈峰研究员联合多家单位在Sci. Bull发文揭示了明末特大干旱背景下北京降水变化及其以太平洋海温变化为主导的驱动新机制

文章简介 论文名称:Coupled Pacific Rim megadroughts contributed to the fall of the Ming Dynasty’s capital in 1644 CE(环太平洋地区的特大干旱影响了公元 1644 年明朝的灭亡) 第一作者及通讯作者:陈峰研究员&王涛研究…