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

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 的并发连接、访问限速、设置访问白名单以及认证访问等。这些安全限制在线上环境是十分必要的,必须要限制恶意的请求以及添加白名单操作。

vivo开始爆发了,新出的手机个个都有顶级配置,价格还很实惠都知道vivo最近在走高端之路,想一改以前的线下品牌线路,本来对此并不抱有太大希望。没想到vivo这两年厚积薄发,愈来愈多手机推陈出新,携手子品牌iQOO在高端颜值性价比市场都颇有茄子这种做法火了,饭店一份要68,在家成本不到6元,真的太香了茄子这种做法火了,饭店一份要68,在家成本不到6元,真的太香了。茄子如今已经成为一年四季都能吃到的一道食材,而且种类繁多,最具代表性的比如西安的绿茄洛阳青茄紫茄圆茄等。茄子本身的营光端机各种类型的接口介绍光端机的接口类型还是比较多的,常见的物理接口类型有BNC接口光纤接口RJ45接口RS232接口RJ11接口。那么,你对这五种典型的物理接口类型是否有所了解呢?接下来就由飞畅科技的小入冬后,不管有钱没钱,多给家人喝这汤,补足营养,舒坦过寒冬进入十二月之后,气温开始降温了,这个时候的人身体最虚弱,不仅仅容易生病,胃口也特别差。俗话说冬季不补,来年受苦,冬天是温补的时候,天气特别寒凉,全身都没有劲,手脚出现冰凉的情况,一楼市冷暖!房企破局向新中国小康网独家专稿文小康中国小康网记者刘彦华受宏观调控政策和疫情等诸多因素的影响,我国房地产市场全面遇冷,房地产行业开始从土地红利金融红利时代进入管理红利时代。旭辉控股集团发布公告大熊猫好看的皮囊千篇一律有趣的灵魂千变万化有中国大熊猫放归之乡的美誉,栗子坪国家级自然保护区也是大熊猫国家公园的组成部分,为了让大家更好地了解保护大熊猫,石棉大熊猫科普公园应运而生大熊猫可不只是大熊猫孙前口述孙前旅游策划专多读课外书对孩子有哪些好处?阅读可以丰富我们的知识量。多读一些好的课外书,能让我们了解许多科学知识阅读可以让我们拥有千里眼。以下是小编整理的多读课外书对孩子有哪些好处,欢迎阅读。多读课外书对孩子有哪些好处?多广州市中心的著名城中村,被高楼大厦环绕,已有近800年历史这里是刘小顺的旅行和生活研究所。广州,作为我国四大一线城市之一,经济发达历史悠久,一直都是很多人非常向往的城市,也吸引了很多游客前来旅游。而说起广州这座一线城市,除了鳞次栉比的高楼CBA最新战报北控112104广州14连败垫底北京时间2022年12月16日,20222023赛季CBA常规赛第14轮继续进行,在刚刚结束的两场比赛中,北京控股112比109险胜四川金荣实业,广州龙狮104比68大胜宁波町渥。宁用赵锦洋不上赵睿?宏远师徒矛盾公开,赵睿离队正式进入倒计时北京时间12月16日,202223赛季CBA常规赛第14轮,刚刚结束了一场焦点之战,近期状态火热的广东宏远,迎来了大黑马吉林九台农商银行的挑战,凭借着马尚布鲁克斯砍下的32分9篮板记者黑贝申请交易,更衣室爆发矛盾,湖人大哥带不动他想回狼队湖人队目前11胜16负来到西部第十二,浓眉越战越勇,威少化身传球手,球队也逐渐回到正轨。但是他们暴露的缺点越来越多,球队只有詹姆斯和浓眉能够得分,其他的球员都是辅助。詹姆斯和浓眉关
FTX危机蔓延,加密借贷陷入崩溃1。FTX和Alameda是多家加密借贷机构的主要借款人2。GenesisGeminiEarnBlockFi等借贷机构暂停赎回业务3。FTX的86位投资者与庞大的关系网受到牵连文丨京东物流第三季营收358亿并表德邦经调整利润为4。5亿雷递网乐天11月18日京东物流今日发布财报。财报显示,京东物流2022年第三季度营收357。7亿元,较上年同期的257。49亿元增长38。9。这是京东物流收购德邦之后,对德邦物流的央行完善境外机构投资者投资中国债券市场资金管理推动中国债券市场进一步开放央广网北京11月18日消息为进一步扩大金融市场双向开放,近日,中国人民银行国家外汇管理局联合发布境外机构投资者投资中国债券市场资金管理规定(以下简称规定),完善并明确境外机构投资者BYD纯电重卡霸占深圳市场!电池重3吨,双枪充电,让油耗子失业比亚迪不仅仅让大众丰田本田通用别克雪佛兰日产的乘用车感到巨大压力。与此同时,比亚迪的纯电货车更因为0排放和超强扭力,以及非常低廉的用车成本,已经让一汽解放东风天龙上汽红岩陕汽德龙等预约不到的博物馆免费门票网上开卖预约不到的博物馆免费门票网上开卖记者调查博物馆黄牛票泛滥问题漫画李晓军调查动机前不久,读者陈女士向法治日报记者来电称,她提前3天在湖南省博物馆官方门票预约平台进行预约,结果发现门票2023年北京博物馆通票发行汇集120家博物馆景点据央视新闻消息,11月18日上午,2023年北京博物馆通票首发式在北京孔庙和国子监博物馆举行。发行博物馆通票不仅可以更好发挥北京博物馆资源优势,降低参观门槛,鼓励更多人走进博物馆还皮蓬前妻与乔丹的儿子沙滩约会,好身材一览无余这剧情挺狗血的。近日,乔丹儿子和皮蓬前妻被再次拍到在沙滩上约会。两人穿着暴露,身材一览无余,在沙滩上举止亲密,有说有笑。值得一提的是皮蓬前妻拉尔萨。皮蓬今年48岁,已经是4个孩子的全国房价两个月跌7!广州深圳和郑州等47个城市新房和二手房都降价中国经济周刊经济网讯(记者孙庭阳)10月份,全国新建住宅价格和销售额双双下降。在70个大中城市中,47个城市的新房和二手房价格在9月10月连续下降。近期,国家统计局公布全国房地产开2022年中国羽绒服行业研究报告2022年11月7日,我国迎来冬季的第一个节气立冬。寒冬将至,不少消费者也开始添置羽绒服等防寒用品。从我国羽绒服行业市场规模来看,根据中国服装协会数据统计,2021年中国羽绒服市场中国医药涨停大战第1集,开了狂暴的顶级游资方新侠狂买1。91亿1选股中国医药,炒作医药方向,该公司与辉瑞签订协议,将在协议期内(2022年度)负责辉瑞公司新冠病毒治疗药物PAXLOVID在中国大陆市场的商业运营。消息面上,官媒称对临床急需药品云南十日06石林(二)随着导游一路前行,风景也渐入佳境。在石林入口处就望见树林间一片黑压压的石头森林展现在不远处。沿石铺的小径下行,走不多远就见绿茵茵的草地上一石屏立。走到巨石前,只见石分为上下两部分,