范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

08Nginx入门教程Nginx的Http模块介绍(中)

  在前面介绍完 post-read、server-rewrite、find-config、rewrite 和 post-rewrite 阶段后,我们将继续学习 preaccess 和 access 两个阶段,中间会涉及部分模块,一同进行说明。 1. preaccess 阶段
  在 preaccess 阶段在 access 阶段之前,主要是限制用户的请求,比如并发连接数(limit_conn模块)和每秒请求数(limit_req 模块)等。这两个模块对于预防一些攻击请求是很有效的。 1.1 limit_conn 模块
  ngx_http_limit_conn_module 模块限制单个 ip 的建立连接的个数,该模块内有 6 个指令。分别如下: limit_conn_zone : 该指令主要的作用就是分配共享内存。 下面的指令格式中 key 定义键,这个 key 往往取客户端的真实 ip,zone=name 定义区域名称,后面的 limit_conn 指令会用到的。size 定义各个键共享内存空间大小; Syntax: limit_conn_zone key zone=name:size; Default: — Context: http limit_conn_status : 对于连接拒绝的请求,返回设置的状态码,默认是 503; Syntax: limit_conn_status code; Default: limit_conn_status 503; Context: http, server, location limit_conn : 该指令实际限制请求的并发连接数。指令指定每个给定键值的最大同时连接数,当超过这个数字时被返回 503 (默认,可以由指令 limit_conn_status 设置)错误; Syntax: limit_conn zone number; Default: — Context: http, server, location limit_conn_log_level : 当达到最大限制连接数后,记录日志的等级; Syntax: limit_conn_log_level info | notice | warn | error; Default: limit_conn_log_level error; Context: http, server, location limit_conn_dry_run : 这个指令是 1.17.6 版本中才出现的,用于设置演习模式。在这个模式中,连接数不受限制。但是在共享内存的区域中,过多的连接数也会照常处理。 Syntax: limit_conn_dry_run on | off; Default: limit_conn_dry_run off; Context: http, server, location limit_zone : 该指令已弃用,由 limit_conn_zone 代替,不再进行说明。
  实例 http {     ...     limit_conn_zone $binary_remote_addr zone=addr:10m      server {         ...         location / {             limit_conn_status 500;             limit_conn_log_level warn;             # 限制向用户返回的速度,每秒50个字节             limit_rate 50;             limit_conn addr 10;         }     }  } 1.2 limit_req 模块
  ngx_http_limit_req_module 模块主要用于处理突发流量,它基于漏斗算法将突发的流量限定为恒定的流量。如果请求容量没有超出设定的极限,后续的突发请求的响应会变慢,而对于超过容量的请求,则会立即返回 503(默认)错误。
  该模块模块中比较重要的指令有: limit_req_zone 指令,定义共享内存, key 关键字以及限制速率 Syntax: limit_req_zone key zone=name:size rate=rate [sync]; Default: — Context: http 代码块123limit_req 指令,限制并发连接数 Syntax: limit_req zone=name [burst=number] [nodelay | delay=number]; Default: — Context: http, server, location 代码块123limit_req_log_level 指令,设置服务拒绝请求发生时打印的日志级别 Syntax:	limit_req_log_level info | notice | warn | error; Default: limit_req_log_level error; Context:	http, server, location 代码块1234limit_req_status 指令, 设置服务拒绝请求发生时返回状态码 Syntax: limit_req_status code; Default: limit_req_status 503; Context: http, server, location 代码块1232. access 阶段2.1 限制某些 ip 地址的访问权限
  在 access 阶段,我们可以通 allow 和 deny 指令来允许和拒绝某些 ip 的访问权限,指令的用法如下: Syntax: allow address | CIDR | unix: | all; Default: — Context: http, server, location, limit_except  Syntax: deny address | CIDR | unix: | all; Default: — Context: http, server, location, limit_except
  实例
  allow 和 deny 指令后面可以跟具体 ip 地址,也可以跟一个 ip 段, 或者所有(all)。 location / {     deny  192.168.1.1;     allow 192.168.1.0/24;     allow 10.1.1.0/16;     allow 2001:0db8::/32;     deny  all; } 2.2 auth_basic 模块
  auth_basic 模块是基于 HTTP Basic Authentication 协议进行用户名和密码的认证,它默认是编译进 Nginx 中的,可以在源码编译阶段通过 --without-http_auth_basic_module 禁用该模块。它的用法如下: Syntax:	auth_basic string | off; # 默认是关闭的 Default: auth_basic off; Context: http, server, location, limit_except  Syntax:	auth_basic_user_file file; Default: — Context: http, server, location, limit_except
  对于使用文件保存用户名和密码,二者之间需用冒号隔开,如下所示。 # comment name1:password1 name2:password2:comment name3:password3
  在 centos 系统上,想要生成这样的密码文件,我们可以使用 httpd-tools 工具完成,直接使用  yum install  安装即可。 $ sudo yum install httpd-tools # 生成密码文件user_file,帐号为user,密码为pass $ htpasswd -bc user_file user pass
  接下来,我们只需要配置好 auth_basic 指令,即可对相应的 http 请求做好认证工作。 2.3 第三方访问控制
  第三方的访问控制是用到了auth_request模块,该模块的功能是向上游服务转发请求,如果上游服务返回的相应码是 2xx,则通过认证,继续向后执行;若返回的 401 或者 403,则将响应返回给客户端。
  auth_request 模块默认是未编译进 Nginx 中的,因此我们需要使用 --with-http_auth_reques_module 将该模块编译进 Nginx 中,然后我们才能使用该模块。 Syntax: auth_request uri | off; Default: auth_request off; Context: http, server, location  Syntax: auth_request_set $variable value; Default: — Context: http, server, location
  官方示例: location /private/ {     auth_request /auth;     ... }  location = /auth {     # 上游认证服务地址     proxy_pass ...     proxy_pass_request_body off;     proxy_set_header Content-Length "";     proxy_set_header X-Original-URI $request_uri; } 3. 实验3.1 limit_conn 模块实验
  本次案例将使用 limit_conn 模块中的指令完成限速功能实验。实验配置块如下: ... http {     ...     # 没有这个会报错,必须要定义共享内存     limit_conn_zone $binary_remote_addr zone=addr:10m;     ...     server {         server_name localhost;         listen 8010;          location / {            limit_rate 50;            limit_conn addr 1;         }      }     ... } ...
  使用 limit_rate 指令用于限制 Nginx 相应速度,每秒返回 50 个字节,然后是限制并发数为 2,这样方便展示效果。当我们打开一个浏览器请求该端口下的根路径时,由于相应会比较慢,迅速打开另一个窗口请求同样的地址,会发现再次请求时,正好达到了同时并发数为 2,启动限制功能,第二个窗口返回 503 错误(默认)。
  访问第一次
  快速访问第二次
  3.2 access 模块实验
  我们做一个简单的示例,配置如下。在 /root/test/web 下有 web1.html 和 web2.html 两个静态文件。访问/web1.html 时,使用 allow all指令将所有来源的 ip 请求全部放过(当然也可以不写);使用 deny all 会拒绝所有,所以访问 /web2.htm l时,会出现 403 的报错页面。 server {    server_name access.test.com;    listen 8011;     root /root/test/web;     location /web1.html {       default_type text/html;       allow all;       # return 200 "access";    }     location /web2.html {       default_type text/html;       deny all;       # return 200 "deny";    } }
  访问允许的 web1.html 页面
  访问禁止的 web2.html
  大家可以思考下,如果使用的是 return 指令呢,会有怎样的结果?打开注释,重新加载 Nginx 后,可以看到无论是访问 /web1.html 还是 /web2.html,我们都可以看到想要的 return 指令中的结果。这是因为 return 指令所在的 rewrite 模块先于 access 模块执行,所以不会执行到 allow 和 deny 指令就直接返回了。但是对于访问静态页面资源,则是在 content 阶段执行的,所以会在经过 allow 和 deny 指令处理后才获取静态资源页面的内容,并返回给用户。 3.3 auth_basic 模块实验   $ htpasswd -bc /root/user.pass store @store.123!    $ cat /root/user.pass    store:$apr1$36xHOQGz$yk4O3roiW3SIJrkXFJ0pS1 代码块123
  在 Nginx 加入如下 server 块的配置,监听 8012 端口,并在 / 路径中加入认证模块。 server {    server_name auth_basic.test.com;    listen 8012;     location / {        auth_basic           "my site";        auth_basic_user_file /root/user.pass;    } }
  重新加载 Nginx 后,访问主机的 8012 端口的根路径时,就会发现需要输入账号和密码了。成功输入账号和密码后,就可以看到 Nginx 的欢迎页了。
  使用 auth_basic 模块认证
  认证成功后的页面 4. 小结
  本篇文章中,我们介绍了 Http 请求的 11 个阶段中的中间阶段,分别为 preaccess 和 access 阶段。在这两个阶段中,主要生效的指令有limit_conn、limit_req、allow、deny 等,这些指令几乎都是用来做访问控制的,用来限制 Nginx 的并发连接、访问限速、设置访问白名单以及认证访问等。这些安全限制在线上环境是十分必要的,必须要限制恶意的请求以及添加白名单操作。

类脑忆阻器基人工智能应用获进展来源科学网随着人工智能的发展,忆阻器因其存算一体的特性被越来越多的研究者探索,铁电忆阻器因其优异的极化可控多值存储和在神经计算领域的应用潜力而受到人们的特别关注。其中,由于铁电材料优化营商环境解密区块链证据存证核验的技术原理区块链证据存证核验电子数据的存证技术原理,简而言之就是把某一电子数据予以保存,用以证明该电子数据在某一时间点的存在。区块链存证方式就是通过对原始数据进行哈希值运算后,将所形成的哈希不必再纠结氢!姜黄素黄金解锁乙醇燃料电池更环保且高效财联社上海5月9日讯(编辑黄君芝)姜黄,一种在大多数厨房中都能找到的香料,但其含有一种提取物,可以用于制造更安全更高效的燃料电池。美国克莱姆森纳米材料研究所(CNI)的研究人员和来企业知识库系统设计与功能应用企业知识库系统的架构设计和应用功能,以平台能力推动企业知识管理的持续运营。通过建设统一的企业级知识分享平台,将各业务部门知识进行统一采编统一存储统一管理,统一运营实现集中知识数据对字节跳动将正式取消大小周工作制7月9日,有消息称字节跳动在内部宣布,将从8月1日起取消大小周,对此,字节跳动官方回复称属实。据悉,字节跳动人力与管理部对内宣布,将于2021年8月1日起取消隔周周日工作的安排,请6月国内新能源车销量榜单比亚迪大爆发宏光MINIEV无敌日前,乘联会公布了2021年6月份国内新能源车销量榜单。按照乘联会的说法,6月份国内新能源车销量为23万辆,同比增长177。7,环比增长了22。6上半年累计销量为100。7万辆,同又是第一,6月销量暴涨207。1,新能源还是比亚迪够强前两天,蔚来理想小鹏纷纷公布了6月的销量数据,三家车企的表现都相当亮眼。蔚来交付量为8083辆,同比增长116。1,且首次超过8000辆理想交付7713辆,同比增长320。6,增幅华为再放新消息,谷歌和OPPO是什么态度?大家都知道安卓刚推出来时有多差,卡顿闪退死机是常事,与苹果的IOS比起来得扔!HTC三星国产手机厂商的合作,一代代的改进才有今天。这得感谢苹果的封闭,微软的无力。你还别说,大家都在最便宜骁龙888手机从realme诞生,学生党终于买得起了618购物狂欢节已经全面展开,各大手机厂商战意浓浓,放狠话,投福利,忙得不亦乐乎。当然了,手机厂商之间的竞争越强烈,对我们消费者来说越是有利。但话说回来,手机厂商让利的时候,就是我工资多少才可以买iPhone手机你觉得工资达到多少才可以买iPhone手机?今天一个朋友的问话让我很吃惊他说他很好奇我挣钱那么多为啥不买个苹果手机?朋友质疑我为什么不买苹果手机听到他的问话,我也很震惊。一方面震惊当找工作登上快手首页,切走蓝领招聘多大蛋糕?图片来源视觉中国文剁椒TMT,作者妙啊行程码带星的可以去上班吗?过去包吃住吗?在快手一个直播间,有人在弹幕问道。不同于常见的直播间,这个直播间,是招工的。在最近的一次APP改版中,
晚上十点有人给我手机充八百块钱话费,让我给她转八百块钱,我转吗?坚决不能转,先报警备案。我工作单位的一个小美女,就是被别人误充了2000块钱的话费。对方也是要求返还现金,她没有理会对方,直接报警处理的。今年三月份的时候,中午十二点多,单位的一个用5号干电池做电源,体验韩国现代这款滑盖手机,续航就是不一样拒绝参数,只谈体验,关注导盲犬小抠,真实解读您熟悉的数码产品,本文阅读预计耗时3分钟。手机行业的发展,在非智能机时代,曾经有百花齐放的状态,突出表现在机器外观造型上各有千秋,即便很1000多元的手机和五六千元的手机,到底有什么区别?手机刚刚出现的时候,价格一直都非常高昂,当年一部大哥大能卖到几万元的价格,手机这种产品基本上就是大老板身份的象征,随后推出的小灵通由于低廉的价格风靡了一时,但是在智能手机来临以后,促进算法推荐技术规范健康发展(人民时评)来源人民日报近年来,随着科技不断发展,算法推荐技术已被广泛应用于生活。算法推荐技术通过抓取用户日常的使用数据,分析得出人们的行为习惯和喜好,进而精准化地提供信息娱乐消费等各类服务。C语言函数在线练习题11。求最大值(1级)1题目描述请编写一个求两整数的最大值函数GetMax。要求在主函数中调用该函数,该函数的主要功能是判断从键盘任意输入两个整数的大小,计算并输出最大值。输入两个整商务部促进新能源汽车消费鼓励开展家电家具以旧换新商务部促进新能源汽车消费鼓励开展家电家具以旧换新财联社1月25日电,商务部市场运行和消费促进司负责人徐兴锋25日在新闻发布会上表示,下一步,将提升传统消费能级。要深化汽车流通领域改彰显绿色新能源车成北京冬奥会交通主力2022北京冬季奥运会还有10几天就要开幕了,绿色成为本次冬奥会的一个突出特点。交通场馆能源等都充满了绿色元素。这绿色冬奥背后的奥秘则是绿色产业绿色技术的快速发展。氢燃料客车纯电动一笔尽调卧底三年,VCPE看呆了这可能是史上最耐人寻味的一笔收购案。上周,微软宣布以687亿美元(约4365亿人民币)收购著名游戏厂商动视暴雪,缔造了迄今为止全球游戏行业内规模最大交易,十分轰动。有趣的是,这笔收今年河北5G网络实现乡镇以上区域和农村重点区域覆盖河北日报讯(记者方素菊)从河北省通信管理局近日召开的2022年全省信息通信工作会议上获悉,今年,全省信息通信行业固定资产投资规模将达到160亿元,电信业务总量达到770亿元,电话用中介涉乐视系旧案被查将影响IPO?两相关公司回应暂未受影响自1月18日中德证券因涉乐视网2016年定增项目被证监会立案调查后,卷入乐视网风波中的中介机构旗下IPO项目是否受影响引发广泛关注。1月20日,兴禾股份在上会前夕临时终止IPO。兴力扣题解之最长公共前缀一题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串。示例1输入strsflower,flow,flight输出fl示例2输入strsdog,rac