《前端运维》中Nginx请求处理流程和核心模块有哪些特点?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1129个文字,预计阅读时间需要5分钟。
上一篇文章,我们学习了nginx的一些基本概念、安装和目录的作用。本文我们将深入探讨nginx的请求处理流程。
一、Nginx请求处理流程我们先来看一张图:
[请求处理流程图]
我们观察上图,首先,客户端发起请求,nginx接收请求,然后经过一系列处理,最后返回响应给客户端。
二、客户端请求我们来看一下客户端请求的过程:
1. 客户端发起请求,nginx服务器接收请求。
2.nginx服务器根据配置,判断请求应该由哪个location处理。
3.location处理请求,可能涉及到反向代理、负载均衡等。
4.处理完成后,nginx服务器将响应返回给客户端。
以上就是nginx请求处理流程的简要介绍。
前一篇内容,我们学习了nginx的一些基本概念、安装和目录的作用。这篇文章我们来学习一些更加深入的内容。
一、Nginx请求处理流程我们先来看张图吧:
我们看上图,首先客户端请求到Nginx服务器,此时会有nginx服务器读取127.0.0.1/
上面命令的意思是,总请求数量40次,每秒并发20次。
1、连接限制
该模块的名称是:ngx_127.0.0.1/
在这里咱们看的不是很清楚哈,所以咱们进入之前学过的nginx日志里看一下: cd /var/log/nginx
ll
然后我们看下图,有两个log,就是我们刚刚执行测试生成的log: 然后我们就可以查看到之前测试的日志了。 2.请求限制 该模块的名称是:ngx_http_limit_req_module。 该模块的核心算法是漏斗算法,把突出的流量限定为恒定多少个请求。limit_req再limit_conn之前生效。 语法: limit_req_zone:定义共享内存,以及key和限制速度。 # 可以以IP为key zone为空间的名称 size为申请空间的大小
Syntax: limit_req_zone key zone=name:size rate=rate;
Default: --
Context: http(定义在server以外)
limit_req:限制并发请求数。 # zone名称 number限制的数量
Syntax: limit_req zone=name [burst=number] [nodelay];
Default: --
Context: http,server,location
burst 是bucket的数量,默认为0。nodelay是对burst中的请求不再采用延迟处理的做法,而是立刻处理。 实战: limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;
server {
location /{
//缓存区队列burst=3个,不延期,即每秒最多可处理rate+burst个.同时处理rate个
//limit_req zone=req_zone;
limit_req zone=one burst=5 nodelay;
}
}
rate=1r/s 表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,即每秒只处理一个请求 zone=req_zone 表示这个参数对应的全局设置就是req_zone的那个内存区域 5)访问控制 有两个模块: http_access_module:基于IP的访问控制。 http_auth_basic_module:基于用户的信任登录。这个很少用,大多数都是用ip来限制。 语法: Syntax: allow address|all;
Default: --
Context: http,server,location,limit_except
Syntax: deny address|CIDR|all;
Default: --
Context: http,server,location,limit_except
CIDR可以百度详细的了解一下。指无类别域间路由。
req_zone
实战:
server { location ~ ^/admin.html{ deny 192.171.207.100; allow all; } }
这两个例子,跟之前的写法没区别,我就不多说了,大家自己尝试下哦。
好啦,今天的内容就到此位置了。后面我们学下CDN。
站在巨人的肩膀上,希望我可以看的更远。本文共计1129个文字,预计阅读时间需要5分钟。
上一篇文章,我们学习了nginx的一些基本概念、安装和目录的作用。本文我们将深入探讨nginx的请求处理流程。
一、Nginx请求处理流程我们先来看一张图:
[请求处理流程图]
我们观察上图,首先,客户端发起请求,nginx接收请求,然后经过一系列处理,最后返回响应给客户端。
二、客户端请求我们来看一下客户端请求的过程:
1. 客户端发起请求,nginx服务器接收请求。
2.nginx服务器根据配置,判断请求应该由哪个location处理。
3.location处理请求,可能涉及到反向代理、负载均衡等。
4.处理完成后,nginx服务器将响应返回给客户端。
以上就是nginx请求处理流程的简要介绍。
前一篇内容,我们学习了nginx的一些基本概念、安装和目录的作用。这篇文章我们来学习一些更加深入的内容。
一、Nginx请求处理流程我们先来看张图吧:
我们看上图,首先客户端请求到Nginx服务器,此时会有nginx服务器读取127.0.0.1/
上面命令的意思是,总请求数量40次,每秒并发20次。
1、连接限制
该模块的名称是:ngx_127.0.0.1/
在这里咱们看的不是很清楚哈,所以咱们进入之前学过的nginx日志里看一下: cd /var/log/nginx
ll
然后我们看下图,有两个log,就是我们刚刚执行测试生成的log: 然后我们就可以查看到之前测试的日志了。 2.请求限制 该模块的名称是:ngx_http_limit_req_module。 该模块的核心算法是漏斗算法,把突出的流量限定为恒定多少个请求。limit_req再limit_conn之前生效。 语法: limit_req_zone:定义共享内存,以及key和限制速度。 # 可以以IP为key zone为空间的名称 size为申请空间的大小
Syntax: limit_req_zone key zone=name:size rate=rate;
Default: --
Context: http(定义在server以外)
limit_req:限制并发请求数。 # zone名称 number限制的数量
Syntax: limit_req zone=name [burst=number] [nodelay];
Default: --
Context: http,server,location
burst 是bucket的数量,默认为0。nodelay是对burst中的请求不再采用延迟处理的做法,而是立刻处理。 实战: limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;
server {
location /{
//缓存区队列burst=3个,不延期,即每秒最多可处理rate+burst个.同时处理rate个
//limit_req zone=req_zone;
limit_req zone=one burst=5 nodelay;
}
}
rate=1r/s 表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,即每秒只处理一个请求 zone=req_zone 表示这个参数对应的全局设置就是req_zone的那个内存区域 5)访问控制 有两个模块: http_access_module:基于IP的访问控制。 http_auth_basic_module:基于用户的信任登录。这个很少用,大多数都是用ip来限制。 语法: Syntax: allow address|all;
Default: --
Context: http,server,location,limit_except
Syntax: deny address|CIDR|all;
Default: --
Context: http,server,location,limit_except
CIDR可以百度详细的了解一下。指无类别域间路由。
req_zone
实战:
server { location ~ ^/admin.html{ deny 192.171.207.100; allow all; } }
这两个例子,跟之前的写法没区别,我就不多说了,大家自己尝试下哦。
好啦,今天的内容就到此位置了。后面我们学下CDN。
站在巨人的肩膀上,希望我可以看的更远。
