Встроенные Lua-скрипты в Nginx расширяют возможности популярного Web сервера практически до бесконечности. При этом для Lua-скриптов у Nginx’а есть удобный интерфейс ngx для доступа к системным данным и функциям манипуляции запросом и ответом. Одна из популярных операций – это получение тела (POST) запроса, для чего используется функция:
local data = ngx.req.get_body_data()
## в переменной data будет лежать все тело запроса
Однако подобная инструкция перестанет работать, если размер запроса превысит [http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size буфер запроса]. Его можно увеличить, однако это крайне не рекомендуется делать. Крупные запросы лучше сразу записывать в файл, как это и делает Nginx. В таком случае, для получения тела запроса в Lua нужно использовать ngx.req.get_body_file().
В результате, правильный код для получения тела запроса независимо от размера будет такой:
local data = **ngx.req.get_body_data()**
if ( data == nil ) then
local handle = io.open(**ngx.req.get_body_file()**, “rb”)
data = handle:read(“*all”)
handle:close()
end
Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…
В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…
Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…
Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…
Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…
IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…