前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Web服务器-Nginx请求的11个阶段

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

作者头像
运维小路
发布于 2025-04-20 15:50:30
发布于 2025-04-20 15:50:30
1470
举报
文章被收录于专栏:运维小路运维小路

我们上一大章介绍了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_module, ngx_http_limit_req_module

7. ACCESS 阶段

  • 作用:权限验证。
  • 典型操作:Basic 认证(auth_basic)、IP 黑白名单(allow/deny)。
  • 模块ngx_http_access_module, ngx_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_module, ngx_http_static_module

11. LOG 阶段

  • 作用:记录请求日志。
  • 典型指令access_log
  • 模块ngx_http_log_module
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. POST_READ 阶段
  • 2. SERVER_REWRITE 阶段
  • 3. FIND_CONFIG 阶段
  • 4. REWRITE 阶段
  • 5. POST_REWRITE 阶段
  • 6. PREACCESS 阶段
  • 7. ACCESS 阶段
  • 8. POST_ACCESS 阶段
  • 9. PRECONTENT 阶段
  • 10. CONTENT 阶段
  • 11. LOG 阶段
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档