Получить параметры, переданные с помощью url в nginx.conf с помощью lua в Openresty

У меня есть URL '/gifts/' ниже код файла nginx.conf, который управляет логикой.

место / подарки {
    default_type text/html;
    установить $target '';
    content_by_lua '
        местный redis = требуют "resty.redis"; 
        локальный красный = redis:new()
        красный:set_timeout(1000) - 1 сек
        local ok, err = red:connect("127.0.0.1", 6379)
        если не хорошо то
            ngx.log(ngx.ERR, ошибка "Redis не удалось подключиться")
            вернуть ngx.exit(ngx.HTTP_SERVICE_UNAVAILABLE)
        конец
        local ok1, err = red:set("Animal", "DOG")
        если не хорошо то
            ngx.say("Не удалось установить кэш в redis", ошибка)
        конец 
        local res, err = red:get("Animal")
        если не res то
            ngx.say("Ошибка", ошибка)
        конец
        ngx.say("Животное", res)
";
}

У меня нормально работает с /gifts/Но у меня есть одно требование, как я хочу получить параметры в этот логин, как/gifts?key=name&value=PrashantЯ хочу получить значение ключа и значение.

2 ответа

Решение

Я использовал req.get_uri_args(), чтобы получить все параметры, переданные в URL.

local args = ngx.req.get_uri_args()

Взгляни на ngx.req.get_uri_args() это вернет таблицу Lua, содержащую все аргументы запроса URL текущего запроса.

Пример:

 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
    ';
}
Другие вопросы по тегам