目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

JAVA全系列 教程

3762个小节阅读:7092.1k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(292)
赞(0)

2 子请求

子请求方式使用的函数是ngx .location.capture 在调用前必须预先在配置文件里配置好它将 "捕获" 的 location。location内部通常使用的是各种反向代理模块,利用" xxx pass " 访问后端服务。

受nginx平台限制,ngx.localtion.capture 只能用在“rewrite_by_lua” '"access_by_lua" 和"content_by_lua" 这三个执行阶段。

2.1 接口说明

ngx.location.capture 的形式是:

它“ 调用 ”本 server 内的名为 "uri " 的 location ,第二个参数是可选的,以表的方传递发起子请求时的额外数据,并 以改写原始 请求信息。表里 字段有:

  • method: 子请求的方法,必须使用 节里的数字常量
  • args : 子请求的 URI 参数,可以字符串 可以是表
  • body :子请求的 body 数据,必须是 ua 字符串
  • ctx : 子请求使用的 ngx ctx 临时数据
  • vars : 子请求可能用到的变量,存储在表里

函数执行后会同步非阻塞地等待请求执行完毕,最后返回一个表,包含四个字段:

  • status 子请求的 响应状态码,相 当于 ngx status;
  • header 子请求的响应头,相当于 ngx. header;
  • body 子请求的响应体:
  • truncated 错误标志位, body 数据是否被意外截断。
2.2 用法:
2.3 应用示例:

http_example.lua

2.4 给你们一点建议

首先,它的扩展性不够灵活,如果要访问新的后端必须要改写配置文件,配置新的locatio 口。而且,如果后端服务没有对应的 Nginx模块就需要使用 语言开发,而C语言的开发难度高、周期长是众所周知的,这就限制了 ngx.location.capture 用范围.其次, ngx.location.capture 使用的子请求机制会“完整”地捕获全部响应内容,需要使用较大的缓冲区,如果响应内容很多会造成大 内存占用, 良费系统资源.

建议尽量不使用口ngx.location.capture ,而是改用 cosocket ,它的底层运行机制与ngx .location capture 基本相同,但成本更低,更灵活可控。

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2