nginx请求处理流程

11 篇文章 0 订阅
3 篇文章 0 订阅

参考文章

https://github.com/trimstray/nginx-admins-handbook#introduction

https://blog.51cto.com/wenxi123/2296295?source=dra

nginx处理一个请求共分为11个阶段

阶段一,NGX_HTTP_POST_READ_PHASE

获取请求头信息
#相关模块: ngx_http_realip_module

阶段二,NGX_HTTP_SERVER_REWRITE_PHASE

实现在server{}块中定义的重写指令:
使用PCRE正则表达式更改请求uri,返回重定向uri;
#相关模块: ngx_http_rewrite_module

阶段三,NGX_HTTP_FIND_CONFIG_PHASE

**仅nginx核心模块可以参与**
根据阶段二的uri匹配location

阶段四,NGX_HTTP_REWRITE_PHASE

由阶段三匹配到location,并在location{}块中再次进行uri转换
#相关模块: ngx_http_rewrite_module

阶段五,NGX_HTTP_POST_REWRITE_PHASE

**仅nginx核心模块可以参与**
请求地址重写提交阶段,防止递归修改uri造成死循环,(一个请求执行10次就会被nginx认定为死循环)
#相关模块: ngx_http_rewrite_module

阶段六,NGX_HTTP_PREACCESS_PHASE

访问控制阶段一:
验证预处理请求限制,访问频率、连接数限制(访问限制)
#相关模块:ngx_http_limit_req_module, ngx_http_limit_conn_module, ngx_http_realip_module

阶段七,NGX_HTTP_ACCESS_PHASE

访问控制阶段二:
客户端验证(源IP是否合法,是否通过HTTP认证)
#相关模块:ngx_http_access_module, ngx_http_auth_basic_module

阶段八,NGX_HTTP_POST_ACCESS_PHASE

**仅nginx核心模块可以参与**
访问控制阶段三:
访问权限检查提交阶段;如果请求不被允许访问nginx服务器,该阶段负责向用户返回错误响应;
#相关模块:ngx_http_access_module, ngx_http_auth_basic_module

阶段九,NGX_HTTP_PRECONTENT_PHASE

**仅nginx核心模块可以参与**
如果http请求访问静态文件资源,try_files配置项可以使这个请求顺序地访问多个静态文件资源,直到某个静态文件资源符合选取条件
#相关模块:ngx_http_try_files_module

阶段十,NGX_HTTP_CONTENT_PHASE

内容产生阶段,大部分HTTP模块会介入该阶段,是所有请求处理阶段中最重要的阶段,因为这个阶段的指令通常是用来生成HTTP响应内容的;

#相关模块:ngx_http_index_module, ngx_http_autoindex_module, ngx_http_gzip_module

阶段十一,NGX_HTTP_LOG_PHASE

记录日志阶段
#相关模块:ngx_http_log_module

示例图

request-flow.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值