upstream与subrequest
upstream的使用方式
ngx_http_upstream_t结构体
ngx_http_upstream_t中的subrequest_in_memory 为1,由input_filter方法处理包体;为0时,upstream会转发响应包体;
ngx_http_upstream_conf_t中的buffering为1时,使用更多的内存和磁盘文件缓存上游的响应包体;为0时,使用固定大小的缓冲区
设置upstream的限制性参数
ngx_http_upstream_conf_t
设置需要访问的第三方服务器地址
ngx_http_upstream_t中的resolved
设置回调方法
启动upstream机制
直接执行ngx_http_upstream_init方法即可启动
回调方法的执行场景
create_request回调方法
reinit_request回调方法
在第一次试图向上游服务器建立连接时,如果连接由于各种异常原因失败,会根据upstream中的conf参数的策略要求再次重连上游服务器
finalize_request回调方法
请求销毁前调用
process_header回调方法
解析上游服务器返回的基于TCP响应头部
rewrite_redirect回调方法
input_filter_init与input_filter
用于处理上游的响应包体
subrequest的使用方式
- 在nginx.conf文件重配置好子请求的处理方式
- 启动subrequest子请求
- 实现子请求执行结束时的回调方法
- 实现父请求被激活时的回调方法