Принципы работы с Nginx LUA

Принципы работы с Nginx LUA

Принципы работы с Nginx LUA — в данном случае речь пойдет о замечательном легком сервере nginx, и не менее замечательном языке LUA, который позволяет делать нам замечательные вещи, используя API nginx. Я предполагаю, что будет написан цикл статей на эту тему, потому как сам еще занимаюсь разборам и изучением этой связки, но уже могу сказать, что простейший функционал использую на некоторых проектах в продакшене, и весьма доволен результатом.

Принципы работы с Nginx LUA

Принципы работы с Nginx LUA

Что это, и зачем оно мне может понадобиться? Давайте перечислю немного примеров:

  • вы можете написать скрипт на LUA, заинклудить в конфиг nginx и обращаться через него с MySQL например;
  • работать можно не только с MySQL, но и с Redis и кучей всего другого;
  • Вы можете обрабатывать заготовки, манипулировать переменными Nginx;
  • Писать функции на языке LUA и строить алгоритмы обработки;
  • Делать редиректы через LUA;
  • Использовать API nginx;
  • LUA умеет хранить горячий кэш в памяти.

Ну как, не плохо? 🙂 А плюс ко всему этому это еще и очень быстро работает.

Подготовка к работе с Nginx LUA

Ну как же без подготовки 🙂 Итак, для работы нам, как минимум, потребуется:

  • Сервер (в моем случае CentOS);
  • Nginx LUA сборка;
  • Ну и конечно же желание.

О том, как сделать сборку, можете прочитать на моём блоге в статье собираем RPM nginx lua.

Установка и настройка Nginx LUA

Ну что ж, поехали:

И это реально всё. Хочу сразу написать, что в своей сборке я использовал два модуля для LUA — json, mysql. Больше мне не требовалось, поэтому ничего и не добавлял.

Принципы работы с Nginx LUA. Пример работы.

Ну а тут, я хочу не просто привести пример работы, но еще и описать метод конфигурации Nginx, по которому удобно дебажить LUA код 🙂 Вот сам конфиг:

А удобство заключается в следующем — мы создаем отдельный локейшен nginx, инклудим LUA скрипты и затем смотрим что получается в ходе разработки, обращаясь к адресу http://test.io (этот домен взят для примера).

Раз уж на то пошло сразу приведу листинг и скриптов.

set_by.lua:

content_by.lua:

И сразу три момента:

  • Не забывайте делать перенос строки;
  • В своих скриптах я использую Unix перевод строки и кодировку UTF-8 без BOM;
  • После каждого изменения скрипта нужна релодить Nginx.

Данные два LUA скрипта весьма просты, и вот что они делают:

set_by.lua берет переменную $skip_cache, которую мы объявили в конфиге и прогоняет по if / else условиям. После этого возвращает значение. Скрипт content_by.lua выводит значение этой переменной, а еще и заголовков заодно. Если я в браузере перейду по ссылке http://test.io/debug/ то увижу:

На этом статья «Принципы работы с Nginx LUA»закончена. Надеюсь Вам понравилось. Далее планирую писать что то более сложное и интересное 🙂

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *