OpenResty 最佳实践学习--实战演习笔记(5)
2017-12-09 17:19
423 查看
本篇整理openresty的子查询和执行阶段!
子查询 ,查询内部对另外一个location做了一次查询,并返回结果!调用另一个location不发htttp,相当于内部调用了一次c函数!
京东商品详情页 –openresty的capture
(1)很多api
(2)无法降级服务
最好只有一个API接口!
每个location 只做一个功能,使用capture 串联起来!
某个location 出问题,就可以砍掉!不影响其他的功能!
res1,rest2,rest3 = ngx.location.capture_multi{
{“/foo”,{args=”a=1&b=2”}},
{“/bar”},
{“/test”,{}},
}
capture_multi 一次可以发起多个location的请求,总的请求时间等于最长的那个请求返回的时间!
串起来,比一个个的性能高!
七个执行阶段:
location /mixed {
body_filter_by_lua ‘ngx.log(ngx.ERR,”body_filter_by_lua”)’;
}
执行结果流程如下:
简单点,可以在content_by_lua中都做了,但是熟悉后最好对应的代码放到对应的阶段去完成!
例子:
明文协议版本
location /mixed{
content_by_lua ‘….’ # 请求处理
}
加密协议版本 2.0
location /mixed {
access_by_lua ‘….’ # 请求加密解码
content_by_lua ‘….’ #请求处理,不需要关心
body_filter_by_lua ‘…..’ #应答加密解码
}
不同阶段有不同的处理行为 ,这是openresty的一大特色!
快乐的时光总是短暂的!下一个阶段在见了!
如果自学《Openresty最佳实践》 github电子书 –重要
http://wiki.jikexueyuan.com/project/openresty/
遇到问题怎么办?
(1)看本地nginx的log/error.log
(2)很诡异的问题,上下文环境,openresty版本,最新可运行代码(重现)!
(3)官方文档
(4)多沟通
如果您觉得这篇博文对你有帮助,请点个赞,谢谢!
如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
祝你今天开心愉快!
欢迎访问我的csdn博客,我们一同成长!
“不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!”
博客首页:http://blog.csdn.net/u010648555
子查询
capture a ---> b
子查询 ,查询内部对另外一个location做了一次查询,并返回结果!调用另一个location不发htttp,相当于内部调用了一次c函数!
京东商品详情页 –openresty的capture
(1)很多api
(2)无法降级服务
最好只有一个API接口!
每个location 只做一个功能,使用capture 串联起来!
某个location 出问题,就可以砍掉!不影响其他的功能!
res1,rest2,rest3 = ngx.location.capture_multi{
{“/foo”,{args=”a=1&b=2”}},
{“/bar”},
{“/test”,{}},
}
capture_multi 一次可以发起多个location的请求,总的请求时间等于最长的那个请求返回的时间!
串起来,比一个个的性能高!
openresty的执行阶段
源于 nginx ,整个流程十分复杂! 不同阶段会挂载不同的模块,达到不同的目地。
七个执行阶段:
location /mixed {
body_filter_by_lua ‘ngx.log(ngx.ERR,”body_filter_by_lua”)’;
set_by_lua $a 'ngx.log(ngx.ERR,"set_by_lua")'; rewrite_by_lua 'ngx.log(ngx.ERR,"rewrite_by_lua")'; access_by_lua 'ngx.log(ngx.ERR,"access_by_lua")'; header_filter_by_lua 'ngx.log(ngx.ERR,"header_filter_by_lua")'; log_by_lua 'ngx.log(ngx.ERR,"log_by_lua")'; content_by_lua 'ngx.log(ngx.ERR,"content_by_lua")';
}
执行结果流程如下:
set_by_lua : 流程分支判断,变量初始化这个功能 rewrite_by_lua: 转发、重定向 access_by_lua:ip准入,接口权限,合法性判断,配置系统自带的ip_table,外部应用防火墙功能 content_by_lua : 内容生成, header_filter_by_lua : 过滤http的请求头,也可以自己添加一些请求头! body_filter_by_lua:应答body log_by_lua : 记录一下日志,可以记录本地或者远端的服务器
简单点,可以在content_by_lua中都做了,但是熟悉后最好对应的代码放到对应的阶段去完成!
例子:
明文协议版本
location /mixed{
content_by_lua ‘….’ # 请求处理
}
加密协议版本 2.0
location /mixed {
access_by_lua ‘….’ # 请求加密解码
content_by_lua ‘….’ #请求处理,不需要关心
body_filter_by_lua ‘…..’ #应答加密解码
}
不同阶段有不同的处理行为 ,这是openresty的一大特色!
快乐的时光总是短暂的!下一个阶段在见了!
如果自学《Openresty最佳实践》 github电子书 –重要
http://wiki.jikexueyuan.com/project/openresty/
遇到问题怎么办?
(1)看本地nginx的log/error.log
(2)很诡异的问题,上下文环境,openresty版本,最新可运行代码(重现)!
(3)官方文档
(4)多沟通
如果您觉得这篇博文对你有帮助,请点个赞,谢谢!
如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
祝你今天开心愉快!
欢迎访问我的csdn博客,我们一同成长!
“不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!”
博客首页:http://blog.csdn.net/u010648555
相关文章推荐
- OpenResty 最佳实践学习--实战演习笔记(4)
- OpenResty 最佳实践学习--实战演习笔记(3)
- OpenResty 最佳实践学习--实战演习笔记(2)
- 第119讲:HDFS的配置以及安全高效的HDFS配置最佳实践学习笔记
- JS DOM编程艺术——最佳实践—— JS学习笔记2015-7-10(第81天)
- 【第五章-最佳实践】javascript DOM 编程艺术-学习笔记
- Spring MVC学习笔记——JSR303介绍及最佳实践
- [连载] 深入理解Java虚拟机(JVM高级特性与最佳实践) 学习笔记连载分享
- Scala中隐式转换内幕操作规则揭秘、最佳实践及其在Spark中的应用源码解析之Scala学习笔记-55
- React-Native学习笔记——react-redux最佳实践应用篇
- Maven学习笔记十六:Maven坐标和依赖(最佳实践之归类依赖)
- OpenResty 最佳实践学习--安装和helloworld(1)
- Maven学习笔记十七:Maven坐标和依赖(最佳实践之优化依赖)
- 关于Android最佳性能实践——高性能编码优化学习笔记
- 关于Android最佳性能实践——布局优化技巧学习笔记
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十一【Area及URL架构的最佳实践】
- React-Native学习笔记——react-redux最佳实践基础篇
- 第62课:SparkSQL下的Parquet使用最佳实践和代码实践学习笔记
- RESTful接口设计原则/最佳实践(学习笔记)
- [ASP.NET学习笔记之三]ADO.NET开发最佳实践