利用Lua读取、设置Nginx变量

Ngx_Lua_API指令和Nginx的指令一样,都存在配置环境的约束问题,需要确保指令的环境符合预期。

常用环境如下:

rewrite_by_lua_block

access_by_lua_block

content_by_lua_block

log_by_lua_block

 

1、控制请求头的指令

操作指令用法
添加请求头ngx.req.set_headerngx.req.set_header("Test", "123")
清除请求头

ngx.req.clear_header

ngx.req.clear_header("Test")
获取请求头ngx.req.get_headers

local h = ngx.req.get_headers()

for k, v in pairs(h) do

        ngx.say('name:', k, 'value:', v)

end

 

 

 

 

 

 

 

2、控制响应头的指令

操作指令用法
获取响应头ngx.resp.get_headers

local h = ngx.resp.get_headers()

for k, v in pairs(h) do

        ngx.say('name:', k, 'value:', v)

end

修改响应头ngx.header.HEADER

ngx.header.X_Test = 'test'

9注意:若头字段名带"-",则用"_"替代。)

清除响应头

ngx.header["Header-Name"] =nilngx.header["X-Test"] =nil

 

 

 

 

 

 

 

 

3、读取请求体的指令

操作指令用法说明
强制获取请求体lua_need_request_body

lua_need_request_body on

data = ngx.var.request_body

不建议使用
同步非阻塞方式获取请求体

同步读取请求体:

ngx.req.read_body

ngx.req.read_body() 

通过内存方式获取请求体数据:

ngx.req.get_body_data

ngx.req.read_body()

local data = ngx.req.get_body_data()

获取请求体前,必须执行ngx.req.read_body()

 

确保client_body_buffer_size和client_max_body_size的值一致,如果请求体数据的大小超过client_body_buffer_size的值,请求体数据会存储到临时文件。

获取存放请求体的临时文件:

ngx.req.get_body_file

ngx.req.read_body()

local file = ngx.req.get_body_file()

获取请求体前,必须执行ngx.req.read_body()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4、输出响应体的指令

操作指令用法说明
异步发送响应体ngx.printngx.print("test") 
ngx.sayngx.say("test")与ngx.print相比较,在输出结果中多了一个回车符
同步发送响应体ngx.flushngx.flush(true) 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值