Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180113
  • 博文数量: 64
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 616
  • 用 户 组: 普通用户
  • 注册时间: 2015-06-09 20:25
文章分类

全部博文(64)

文章存档

2016年(25)

2015年(39)

我的朋友

分类: Web开发

2016-02-03 13:30:45

--nginx变量
local var = ngx.var
ngx.say("ngx.var.a : ", var.a, "
")
ngx.say("ngx.var.b : ", var.b, "
")
ngx.say("ngx.var[2] : ", var[2], "
")
ngx.var.b = 2;


ngx.say("
")


--请求头
local headers = ngx.req.get_headers()
ngx.say("headers begin", "
")
ngx.say("Host : ", headers["Host"], "
")
ngx.say("user-agent : ", headers["user-agent"], "
")
ngx.say("user-agent : ", headers.user_agent, "
")
for k,v in pairs(headers) do
    if type(v) == "table" then
        ngx.say(k, " : ", table.concat(v, ","), "
")
    else
        ngx.say(k, " : ", v, "
")
    end
end
ngx.say("headers end", "
")
ngx.say("
")


--get请求uri参数
ngx.say("uri args begin", "
")
local uri_args = ngx.req.get_uri_args()
for k, v in pairs(uri_args) do
    if type(v) == "table" then
        ngx.say(k, " : ", table.concat(v, ", "), "
")
    else
        ngx.say(k, ": ", v, "
")
    end
end
ngx.say("uri args end", "
")
ngx.say("
")


--post请求参数
ngx.req.read_body()
ngx.say("post args begin", "
")
local post_args = ngx.req.get_post_args()
for k, v in pairs(post_args) do
    if type(v) == "table" then
        ngx.say(k, " : ", table.concat(v, ", "), "
")
    else
        ngx.say(k, ": ", v, "
")
    end
end
ngx.say("post args end", "
")
ngx.say("
")


--请求的http协议版本
ngx.say("ngx.req.http_version : ", ngx.req.http_version(), "
")
--请求方法
ngx.say("ngx.req.get_method : ", ngx.req.get_method(), "
")
--原始的请求头内容
ngx.say("ngx.req.raw_header : ",  ngx.req.raw_header(), "
")
--请求的body内容体
ngx.say("ngx.req.get_body_data() : ", ngx.req.get_body_data(), "
")
ngx.say("
")



ngx.var : nginx变量,如果要赋值如ngx.var.b = 2,此变量必须提前声明;另外对于nginx location中使用正则捕获的捕获组可以使用ngx.var[捕获组数字]获取;

ngx.req.get_headers:获取请求头,默认只获取前100,如果想要获取所以可以调用ngx.req.get_headers(0);获取带中划线的请求头时请使用如headers.user_agent这种方式;如果一个请求头有多个值,则返回的是table;

ngx.req.get_uri_args:获取url请求参数,其用法和get_headers类似;

ngx.req.get_post_args:获取post请求内容体,其用法和get_headers类似,但是必须提前调用ngx.req.read_body()来读取body体(也可以选择在nginx配置文件使用lua_need_request_body on;开启读取body体,但是官方不推荐);

ngx.req.raw_header:未解析的请求头字符串;

ngx.req.get_body_data:为解析的请求body体内容字符串。


local function close_redis(red)
    if not red then
        return
    end
    local ok, err = red:close()
    if not ok then
        ngx.say("close redis error : ", err)
    end
end


local redis = require("resty.redis")


--创建实例
local red = redis:new()
--设置超时(毫秒)
red:set_timeout(1000)
--建立连接
local ip = "127.0.0.1"
local port = 6660
local ok, err = red:connect(ip, port)
if not ok then
    ngx.say("connect to redis error : ", err)
    return close_redis(red)
end
--调用API进行处理
ok, err = red:set("msg", "hello world")
if not ok then
    ngx.say("set msg error : ", err)
    return close_redis(red)
end


--调用API获取数据
local resp, err = red:get("msg")
if not resp then
    ngx.say("get msg error : ", err)
    return close_reedis(red)
end
--得到的数据为空处理
if resp == ngx.null then
    resp = ''  --比如默认值
end
ngx.say("msg : ", resp)


close_redis(red)



阅读(830) | 评论(0) | 转发(0) |
0

上一篇:libev

下一篇:TCP FLAG 组合

给主人留下些什么吧!~~