你以为Nginx只会转发请求?它还能让服务器内部发起“子请求”悄悄传递数据,就像公司部门间的机密对话。
理解Nginx子请求:什么是“请求中的请求”
简单来说,Nginx子请求是由Nginx正在处理的请求在Nginx内部发起的一种级联请求。它们在外观上很像HTTP请求,但实现上却和HTTP协议乃至网络通信一点儿关系都没有。它是Nginx内部的一种抽象调用,目的是为了方便用户把“主请求”的任务分解为多个较小粒度的“内部请求”。
- 主请求:由HTTP客户端从Nginx外部发起的请求。
- 子请求:由Nginx正在处理的请求在Nginx内部发起的一种级联请求。
当一个请求发起一个“子请求”的时候,按照Nginx的术语,习惯把前者称为后者的“父请求”。值得一提的是,Apache服务器中其实也有“子请求”的概念。
子请求的应用场景:何时需要这种“内部对话”
子请求在以下场景中特别有用:
核心模块深度解析:子请求的数据回传机制
1. ngx_http_addition_module模块
ngx_http_addition_module模块是一个在响应之前和之后添加文本的过滤器。它可以通过子请求响应内容来更改response响应体,位置可以是response前或者后。
核心指令:
- add_before_body uri;:在响应正文之前添加给定的子请求而返回的文本。
- add_after_body uri;:在响应正文之后添加给定的子请求而返回的文本。
- addition_types mime-type …;:除了“text/html”之外,还允许在具有指定MIME类型的响应中添加文本。
此模块默认未构建,应使用–with-http_addition_module配置参数启用。






