ngx.exec转发
只能访问nginx内部资源, 而且是get方式, ==rewrite
调用方法:
ngx.exec("/data/new_horizontal_overview1.jpg");
ngx.exec("/tomcat/test",'name=lizw&age=19790825');
ngx.exec("/tomcat/test",{name=lizw,age="19790825"});
注意, 都是get方式
ngx.location.capture转发
GET方法
local request_method = ngx.var.request_method
local args = nil
--获取参数的值
if "GET" == request_method then
args = ngx.req.get_uri_args()
elseif "POST" == request_method then
ngx.req.read_body()
args = ngx.req.get_post_args()
end
--转发请求(仅限nginx内部有效)
a=args["a"]
b=args["b"]
local res = nil
--method get
res=ngx.location.capture("/tomcat/test", {args={a=a, b=b}})
ngx.say("status:", res.status, " response:", res.body)
POST方法
local request_method = ngx.var.request_method
local args = nil
--获取参数的值
if "GET" == request_method then
args = ngx.req.get_uri_args()
elseif "POST" == request_method then
ngx.req.read_body()
args = ngx.req.get_post_args()
end
--转发请求(仅限nginx内部有效)
a=args["a"]
b=args["b"]
local res = nil
--method post
--不用写参数, 参数在body里
res=ngx.location.capture("/tomcat/test", { method = ngx.HTTP_POST)
ngx.say("status:", res.status, " response:", res.body)
自适应参数和method
local request_method = ngx.var.request_method
local args = nil
--获取参数的值
if "GET" == request_method then
args = ngx.req.get_uri_args()
elseif "POST" == request_method then
ngx.req.read_body()
args = ngx.req.get_post_args()
end
--转发请求(仅限nginx内部有效)
a=args["a"]
b=args["b"]
local res = nil
--自动化
local method=nil
if "GET" == request_method then
method = ngx.HTTP_GET
res=ngx.location.capture("/tomcat/test", {method = method, args = ngx.req.get_uri_args()})
elseif "POST" == request_method then
method = ngx.HTTP_POST
res=ngx.location.capture("/tomcat/test", {method = method})
--参数随着body转过去了, 所以这里不需要 args = ...
end
ngx.say("status:", res.status, " response:", res.body)
tcpcopy or capture_multi
local request_method = ngx.var.request_method
local args = nil
ngx.log(ngx.ERR, "start");
--获取参数的值
if "GET" == request_method then
args = ngx.req.get_uri_args()
elseif "POST" == request_method then
ngx.req.read_body()
args = ngx.req.get_post_args()
end
--转发请求(仅限nginx内部有效)
local res = nil
ngx.log(ngx.ERR, "doing");
local uri = ngx.var.uri
ngx.log(ngx.ERR, string.format("获取当前请求的url %s",uri))
--自动化
local method=nil
if "GET" == request_method then
method = ngx.HTTP_GET
res1,res2=ngx.location.capture_multi({
{"/tomcat/test", {method = method, args = ngx.req.get_uri_args()}},
{"/tomcat7/test", {method = method, args = ngx.req.get_uri_args()}}
})
elseif "POST" == request_method then
method = ngx.HTTP_POST
--post的参数在body里, 所以这里不用指定, 下游解body时自动获取
res1,res2=ngx.location.capture_multi({
{"/tomcat/test", {method = method}},
{"/tomcat7/test", {method = method}}
})
end
ngx.log(ngx.ERR, string.format("doing2, method: %s",method))
ngx.log(ngx.ERR, "end")
return ngx.say("status:", res1.status, " response:", res1.body)
分享到:
相关推荐
这篇笔记和资料集合涵盖了这些技术的深度学习和实践应用,结合`OpenResty`进一步提升了它们的功能。 首先,`Nginx`是一款高效的反向代理服务器和负载均衡器,其事件驱动的架构使其能够处理大量的并发连接。在描述中...
Nginx模块开发OpenResty简单使用笔记整理 ### Nginx简介 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中。与Apache相比。 同时,大量的第三方扩展模块也令...
读书笔记:基于 openresty + redis + mysql 实现高性能短链生成服务
注明:此项目主要是学习openresty的练手项目,源码中留下很多注释笔记。代码当前最新_openresty-china-study
总结来说,"linux-RedisLuaNginxOpenResty笔记"涵盖了从基础的Linux服务器管理,到高级的Web服务架构设计,特别是如何利用Lua和Redis提升Nginx的服务性能。这些技术在现代Web应用中广泛应用,掌握它们对于提升个人的...
##笔记 所有文件都放在标准的debian nginx位置 包括init,logrotate以及官方nginx软件包中的post / pre-install / remove脚本。 默认情况下为Ubuntu Trusty构建。 LuaJIT从2.1 Alpha升级到2.1 Beta 1 包括...
LightPath CDN Nginx模块版本:1.0.0-beta描述CDN,内容交付网络,使用Openresty(Nginx)用Lua编写。 网站配置(后端,缓存规则,边缘规则等)存储在Redis中。 如果有兴趣,我会在以后添加适当的文档。 该项目之...
其中有nginx怎样配置负载均衡,图片服务器,资源压缩,黑白名单限制,websocket反向代理,rewrite重写规则,服务器缓存设置,ssl证书配置,keepalive部署nginx集群,openResty部分介绍(漏桶算法流程图)等
开始使用 docker 作为 Lua Web 应用程序服务器进行 Lua Web 开发 在这篇博文中,我将引导您通过使用容器技术软件来开始 Lua Web 开发。 为什么是 ? 从他们的网页: Docker 是一个开源项目,可以从任何应用程序...
3. **OpenResty**: 基于 Nginx 的高性能 Web 应用平台,扩展了 Lua 脚本支持,适合构建动态应用,详情见 http://openresty.org/cn/。 4. **Tengine**: 阿里巴巴贡献的 Nginx 分支,针对大规模高并发场景优化,具有更...
Nginx有多个版本,包括开源版、商业版(Nginx Plus)、OpenResty(集成了Lua脚本支持)和Tengine(淘宝定制的Nginx分支)。这里我们将采用开源版进行编译安装。首先,确保系统中已安装必要的编译工具,如GCC,可以通过...
OpenResty FrontEnd AJAX VueJS NodeJS OpenSource Celery jieba NLTK webcollector 开源的框架学习。 Algorithm 数据结构、算法、设计模式等。 Intelligence Big_Data 大数据相关。 Data-Analysis 数据分析。 Web-...
笔记 Kubernetes 使用 Kubernetes 开发 Kubernetes 源码分析 Docker Docker 原理相关 Bash Linux Linux gawk 由于 gawk 语言太过强大,想了想还是把它单独拎出来说。 关于 gawk 与 awk 的区别:gawk(GNU Awk) 是 ...
个人学习笔记 python nginx AWS认证考试 技术路线 LB负载均衡 负载均衡常见使用场景,问题定位,特别是对于概率性出现的访问超时问题定位。包含如下组件 nginx lvs openresty kong apigateway 消息中间件 对于消息...
Apache APISIX 是一款强大的 API 网关,它基于 Nginx 和 OpenResty 开发,具备云原生特性,能够实现高性能、高可用和安全的 API 管理。在现代微服务架构中,API 网关是关键组件,负责处理客户端请求、路由到正确后端...