Увы, штатного метода нет, но благодаря модулям со сторонними языками это реализуемо, правда пока найдено только 2 метода.
Lua
location = /test { content_by_lua ' ngx.req.read_body() local args, err = ngx.req.get_post_args() if not args then ngx.say("failed to get post args: ", err) return end 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 '; }http://wiki.nginx.org/HttpLuaModule#ngx.req.get_post_args
http://wiki.nginx.org/HttpLuaModule
Также есть set_by_lua и set_by_lua_file,
Пара замечаний про модуль.
This document describes ngx_lua v0.9.16 released on 22 June 2015.
Найти можно через http://wiki.nginx.org/3rdPartyModules
Штатно его нет, надо пересобирать nginx.
http://stackoverflow.com/questions/11066300/how-does-one-access-post-arguments-from-nginx-upload-module-in-embedded-lua-pe
Также можно посмотреть на openresty, который к тому же содержит большой комплект неблокирующих lua библиотек для работы.
http://habrahabr.ru/post/240217/
Perl
Читая куцую пародию на доки и статью от 2008 года Встроенному perl'у быть! становится очень грустно и печально от понимания, что если нет более вменяемых модулей, то придется использовать ЭТО. На дворе 2015, а тьма граблей и код в несколько экранов просто ради получения post параметров? Да проще свой модуль под это написать, чем делать ЭТО. А в штатном репозитории только перл модуль и есть.
Собственно, примеры выше. Ну или
http://snippets.aktagon.com/snippets/555-how-to-filter-post-parameters-with-nginx-and-the-perl-module
Спрашивается, чего авторам тот же Lua штатно не подключить? Модуль асинхронный, неблокирующий, вполне себе отлаженный, умеет много и хорошо, писать на нём быстрее чем на перле, используется китайцами давно и в хайлоаде... Хотя если оно включено в платную версию, то понятно.
Более того, у их форка от taobao оно активно по умолчанию
http://dragonflybsd.blogspot.ru/2015/08/tengine-nginx-taobao.html
Комментариев нет:
Отправить комментарий