11.8K ·GitHub
Что это такое?
Это встраивает язык сценариев Lua прямо в NGINX и позволяет обрабатывать HTTP-запросы с помощью кода на Lua через директивы вроде 'content_by_lua_block', а не полагаться только на обычную конфигурацию или собственные модули на C.
Это самостоятельный сервер или дополнение для NGINX?
Это модуль на C, который компилируется непосредственно в исходный код NGINX. Это не отдельный сервер и не то, что можно просто добавить к уже готовому бинарному файлу.
Как заставить это работать в NGINX?
Пересоберите NGINX из исходников с этим модулем командой './configure --add-module=/path/to/lua-nginx-module' или используйте сборку OpenResty, в которую он уже входит в скомпилированном виде.
Нужны ли мне LuaJIT или что-то ещё перед сборкой?
Да: нужны LuaJIT (или стандартный Lua 5.1) и модуль ngx_devel_kit (NDK), которые должны быть подготовлены вместе с исходниками NGINX, прежде чем этот модуль можно будет скомпилировать.
Можно ли добавить это в уже установленный NGINX без пересборки?
Нет, такие модули NGINX статически связываются на этапе сборки, поэтому NGINX нужно пересобирать из исходников каждый раз, когда вы добавляете или обновляете модуль.
Для каких операционных систем это предназначено?
Это рассчитано на Linux и другие Unix-подобные системы, где обычно работает NGINX; сборки для Windows не упоминаются.
Какие директивы NGINX добавляет этот модуль?
Он добавляет директивы сценариев Lua, такие как content_by_lua_block, access_by_lua_block и rewrite_by_lua_block, которые позволяют запускать код на Lua на разных этапах обработки запроса.
Это то же самое, что OpenResty?
Нет, OpenResty — это полноценная сборка NGINX, которая включает этот модуль вместе с LuaJIT и другими компонентами; lua-nginx-module — это основа, от которой зависит OpenResty.
Зачем использовать Lua здесь, а не писать собственный модуль NGINX на C?
Скрипты Lua работают внутри неблокирующего цикла событий NGINX, что даёт почти C-производительность для собственной логики обработки запросов без сложности написания и компиляции модуля на C.
Which topics is it in?
nginx, web-server, scripting, middleware, lua, unix, reverse-proxy, high-performance, http, c, devops, backend