Использование Lua в Nginx

Thank you for reading this post, don't forget to subscribe!

Openresty, боль­шой набор моду­лей для Nginx'a, откры­ва­ет мно­го воз­мож­но­стей для раз­ра­бот­ки пря­мо на попу­ляр­ном Web сер­ве­ре. Одним из глав­ных досто­инств это­го паке­та явля­ет­ся рас­ши­ре­ние для под­держ­ки язы­ка Lua в Nginx.

Установка

В Debian систе­мах все, что нуж­но, есть в пакете:

Hello world

Выве­дем hello world:

# Выве­дем извест­ную стро­ку пря­мо с помо­щью Nginx'a

Теперь пере­за­пу­стим Nginx:

И по адре­су http://сайт/hello увидим:

Вывод HTML

Что­бы выве­сти HTML доста­точ­но заме­нить тип кон­тен­та и ука­зать сам контент:

# Выво­дим HTML из Nginx Lua

Организация кода

Для удоб­ства сто­ит исполь­зо­вать внеш­ние Lua файлы:

# загруз­ка Lua кода из внеш­них файлов

Во вре­мя раз­ра­бот­ки удоб­но исполь­зо­вать lua_code_cache, т.к. код фай­ла мож­но будет менять без пере­за­пус­ка Nginx'a.

Несколько обработчиков

Глобальные переменные

Для настро­ек и ста­ти­сти­ки удоб­но исполь­зо­вать гло­баль­ные пере­мен­ные (они будут иметь оди­на­ко­вые зна­че­ния для всех запросов):

# Исполь­зу­ем гло­баль­ную пере­мен­ную для под­сче­та коли­че­ства запросов

Работа с данными

Nginx под­дер­жи­ва­ет рабо­ту с раз­ны­ми база­ми дан­ных, в т.ч. Mysql и Redis.

При­мер про­сто­го скрип­та для под­сче­та коли­че­ства запро­сов в Redis'e:

# Уве­ли­чи­ва­ем счет­чик test с помо­щью Redis

Openresty поз­во­ля­ет исполь­зо­вать Nginx не про­сто как Web сер­вер, а как пол­но­цен­ную плат­фор­му. С помо­щью Lua мож­но реа­ли­зо­вать боль­шой набор функ­ци­о­на­ла, в т.ч. и рабо­ту с данными.