Lua#

Пакет Lua обеспечивает интеграцию языка программирования Lua в модель обработки событий Angie и позволяет расширять функциональность сервера с помощью скриптов на Lua. Состоит из двух модулей:

Возможности#

Примеры сценариев использования:

  • объединение и обработка выходных данных от различных upstream-серверов (proxy, drizzle, postgres, redis, memcached и др.);

  • реализация логики контроля доступа и безопасности до передачи запроса на backend;

  • модификация заголовков ответа;

  • извлечение информации о проксируемых серверах из внешних хранилищ и динамический выбор upstream;

  • написание полноценных веб-приложений внутри content handler;

  • маршрутизация URL на этапе rewrite;

  • реализация расширенного кэширования для подзапросоов и location.

Производительность LuaJIT-среды сопоставима с языком C: ее отличают высокая скорость выполнения и низкое потребление памяти. Это делает Lua-интеграцию в Angie особенно эффективной.

Загрузка модуля#

Использование требует предварительной загрузки модуля ndk. Загрузка модулей в контексте main{}:

load_module modules/ndk_http_module.so; load_module
modules/ngx_http_lua_module.so;    # для HTTP
modules/ngx_stream_lua_module.so;  # для Stream

Устанавливаемые Lua-библиотеки#

Вместе с Lua-модулями устанавливаются следующие сторонние библиотеки:

  1. luajit2

  2. lua_chronos

  3. lua_cjson

  4. lua-dumper

  5. lua-ffi-zlib

  6. inspect.lua

  7. lua-resty-core

  8. lua-resty-hmac

  9. lua-resty-http

  10. lua-resty-jwt

  11. lua-resty-lrucache

  12. lua-resty-openidc

  13. lua-resty-openssl

  14. lua-resty-session

  15. lua-resty-string

Дополнительная информация#

Подробная документация и исходный код доступны по ссылкам: