《前端运维》中Nginx请求处理流程和核心模块有哪些特点?

2026-05-17 01:321阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1129个文字,预计阅读时间需要5分钟。

《前端运维》中Nginx请求处理流程和核心模块有哪些特点?

上一篇文章,我们学习了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; } }

  • $binary_remote_addr 表示远程的IP地址
  • zone=req_zone:10m 表示一个内存区域大小为10m,并且设定了名称为req_zone
  • rate=1r/s 表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,即每秒只处理一个请求

  • zone=req_zone 表示这个参数对应的全局设置就是req_zone的那个内存区域

  • burst 设置一个大小为3的缓冲区,当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内等待,但是这个等待区里的位置只有3个,超过的请求会直接报503的错误然后返回。
  • nodelay 如果设置,会在瞬时提供处理(burst + rate)个请求的能力,请求超过(burst + rate)的时候就会直接返回503,永远不存在请求需要等待的情况,如果没有设置,则所有请求会依次等待排队

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可以百度详细的了解一下。指无类别域间路由。

《前端运维》中Nginx请求处理流程和核心模块有哪些特点?

实战:

server { location ~ ^/admin.html{ deny 192.171.207.100; allow all; } }

  这两个例子,跟之前的写法没区别,我就不多说了,大家自己尝试下哦。

  好啦,今天的内容就到此位置了。后面我们学下CDN。

站在巨人的肩膀上,希望我可以看的更远。

本文共计1129个文字,预计阅读时间需要5分钟。

《前端运维》中Nginx请求处理流程和核心模块有哪些特点?

上一篇文章,我们学习了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; } }

  • $binary_remote_addr 表示远程的IP地址
  • zone=req_zone:10m 表示一个内存区域大小为10m,并且设定了名称为req_zone
  • rate=1r/s 表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,即每秒只处理一个请求

  • zone=req_zone 表示这个参数对应的全局设置就是req_zone的那个内存区域

  • burst 设置一个大小为3的缓冲区,当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内等待,但是这个等待区里的位置只有3个,超过的请求会直接报503的错误然后返回。
  • nodelay 如果设置,会在瞬时提供处理(burst + rate)个请求的能力,请求超过(burst + rate)的时候就会直接返回503,永远不存在请求需要等待的情况,如果没有设置,则所有请求会依次等待排队

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可以百度详细的了解一下。指无类别域间路由。

《前端运维》中Nginx请求处理流程和核心模块有哪些特点?

实战:

server { location ~ ^/admin.html{ deny 192.171.207.100; allow all; } }

  这两个例子,跟之前的写法没区别,我就不多说了,大家自己尝试下哦。

  好啦,今天的内容就到此位置了。后面我们学下CDN。

站在巨人的肩膀上,希望我可以看的更远。