Назад | Перейти на главную страницу

Создайте LUA как динамический модуль Nginx

Я обнаружил, что для использования LUA с Nginx мне нужно:

Интересно, как собрать сам модуль, а затем загрузить его в упакованный Nginx. Я не хочу создавать Nginx, поскольку это означает, что я потеряю обновления пакетов. Как я могу это сделать?

Интересно, как собрать сам модуль, а затем загрузить его в упакованный Nginx.

Чтобы построить сам модуль, вы можете получить любой существующий модуль SRPM для модуля NGINX и настроить его по мере необходимости. Главное - убедиться, что вы прошли --with-compat в сценарий настройки NGINX, чтобы модуль не компилировался с теми же аргументами, что и NGINX, с которым вы его будете использовать.

Вам также нужно будет создать отдельный пакет для luajit2, чтобы получить выгоду от более быстрого выполнения Lua (или убедиться, что он статически связан в пакете модуля).

Создание отдельного luajit2 package - хорошая идея, потому что тогда он отделяется от модуля, и вы можете обновить его отдельно, когда выйдет новая версия.

Затем вам нужно будет отслеживать выпуски библиотеки NGINX / модуль / luajit2, чтобы постоянно перестраивать пакет модуля / библиотеки, а затем применять его к репозиторию, который вы вручную настроили.

В конце концов, мы решили, что делать все это самостоятельно - излишне, и выбрали репозиторий GetPageSpeed, который предоставляет как модуль Lua, так и более быстрый luajit2. Я говорю, что это сэкономило деньги, потому что основная ветка NGINX выпускается примерно каждые 4–6 недель, и мы можем просто yum upgrade в новые модули NGINX / (там не только модули Lua, но мы также используем из них PageSpeed ​​и Brotli).

Бесплатные альтернативы, упомянутые в OpenResty, не сокращают его, поскольку они, как правило, полагаются на более старые версии NGINX, а мы хотим, чтобы была доступна последняя основная линия NGINX.

Для любительского проекта я бы посоветовал не компилировать его. Но для производственного использования я бы не рекомендовал компиляцию из-за рисков безопасности и всех хлопот с обслуживанием.