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

我们上一大章介绍了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
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。

被折叠的 条评论
为什么被折叠?



