在Openresty中通过lua获取通过url传递给nginx.conf的参数

时间:2013-11-13 11:53:01

标签: nginx lua

我有一个网址'/ gifts /'下面是nginx.conf文件的代码,它是管理逻辑。

location /gifts {
    default_type text/html;
    set $target '';
    content_by_lua '
        local redis = require "resty.redis"; 
        local red = redis:new()
        red:set_timeout(1000) -- 1 sec
        local ok, err = red:connect("127.0.0.1", 6379)
        if not ok then
            ngx.log(ngx.ERR, err, "Redis failed to connect")
            return ngx.exit(ngx.HTTP_SERVICE_UNAVAILABLE)
        end
        local ok1, err = red:set("Animal", "DOG")
        if not ok then
            ngx.say("Failed to set cache in redis", err)
        end 
        local res, err = red:get("Animal")
        if not res then
            ngx.say("Failure", err)
        end
        ngx.say("Animal", res)
';
}

/gifts/我的工作正常 但我有一个要求,比如我想在这个登录中获取参数 /gifts?key=name&value=Prashant 我想获取键值和值。

2 个答案:

答案 0 :(得分:3)

我使用req.get_uri_args()来获取在url中传递的所有参数。

local args = ngx.req.get_uri_args()

答案 1 :(得分:2)

看看ngx.req.get_uri_args(),这将返回一个包含所有当前请求URL查询参数的Lua表。

示例:

 location = /test {
    content_by_lua '
        local args = ngx.req.get_uri_args()
        for key, val in pairs(args) do
            if type(val) == "table" then
                ngx.say(key, ": ", table.concat(val, ", "))
            else
                ngx.say(key, ": ", val)
            end
        end
    ';
}