Web服务器-Nginx请求的11个阶段

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

我们上一大章介绍了Kubernetes的知识,本章节我们进入中间件的讲解,这里会包含很多不同的类型组件,中间件的第一个大类我这里定义的是Web服务器。由于目前使用最广泛的Web服务器是Nginx,所以我们这里的讲解主要以Nginx服务器为主。

Nginx 处理 HTTP 请求时,会将其拆分为 11 个有序阶段,每个阶段负责不同的处理逻辑。理解这些阶段对配置优化、调试和自定义模块开发至关重要。

对于大多数人其实都用不到这里的知识,我为什么会接触到呢,是因为很久以前遇到一个问题就是用户发起了请求,但是不知道什么原因,Nginx未记录日志。然后到处查资料,发现Nginx日志是最后一步,他的请求可能在前面任何一个地方(甚至网络问题,请求未过来)出现问题。

了解学习这些知识,可能没机会用到,但是他能加强你对Nginx的理解。技术的进步不就在这样的一次次看似没用的学习中吗。


1. POST_READ 阶段

  • 作用:读取完整请求头后的最早处理阶段。

  • 典型操作:获取客户端真实 IP(如 set_real_ip_from)。

  • 模块ngx_http_realip_module


2. SERVER_REWRITE 阶段

  • 作用:在 server 块内执行 URL 重写。

  • 典型指令rewrite(在 server 上下文中)。

  • 模块ngx_http_rewrite_module


3. FIND_CONFIG 阶段

  • 作用:根据 URL 匹配 location 块(不可干预)。

  • 说明:Nginx 内部自动选择最佳 location,无用户配置。


4. REWRITE 阶段

  • 作用:在选定的 location 内再次重写 URL。

  • 典型指令rewrite(在 location 中)。

  • 模块ngx_http_rewrite_module


5. POST_REWRITE 阶段

  • 作用:检查重写结果,决定是否重新跳转阶段(如循环重写时终止)。

  • 说明:内部处理阶段,用户无法配置。


6. PREACCESS 阶段

  • 作用:访问控制前的预处理。

  • 典型操作:连接数限制(limit_conn)、请求频率限制(limit_req)。

  • 模块ngx_http_limit_conn_modulengx_http_limit_req_module


7. ACCESS 阶段

  • 作用:权限验证。

  • 典型操作:Basic 认证(auth_basic)、IP 黑白名单(allow/deny)。

  • 模块ngx_http_access_modulengx_http_auth_basic_module


8. POST_ACCESS 阶段

  • 作用:处理 ACCESS 阶段的结果(如拒绝请求时返回 403)。

  • 说明:内部处理阶段,用户不可配置。


9. PRECONTENT 阶段

  • 作用:生成响应内容前的最后处理。

  • 典型操作try_files 检查静态文件是否存在。

  • 模块ngx_http_try_files_module


10. CONTENT 阶段

  • 作用:生成响应内容。

  • 典型操作:代理转发(proxy_pass)、返回静态文件(root)、执行 FastCGI。

  • 模块ngx_http_proxy_modulengx_http_static_module


11. LOG 阶段

  • 作用:记录请求日志。

  • 典型指令access_log

  • 模块ngx_http_log_module


运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值