Pull to refresh

Comments 16

Отлично. Рад, что я не одинок в своём горе :)
Одно замечание: в 2гисе мы опытным путём установили, что скармливать регулярки nginx'у получается быстрее, чем обрабатывать их родным gsub'ом в Lua. Разница под нагрузкой — примерно 300%.
Использование lua в nginx нам самим очень нравится.

В посте приведен не окончательный вариант кода. В итоге регулярок у нас вообще не будет. Та же реализация path_is_static выполнена именно так, как приведено, а не через регулярку, осознанно. По скорости не тестили, просто в данном случае пока можно обойтись и без них.
Nginx + Lua очень приятная связка, пока на ней реализовал учет статистики загрузок в GA, при этом файл лежит статически, ни через какие дополнительные скрипты не проходит. Завтра чтоб не потерялось данное решение, может кому и пригодится, оформлю в виде статьи.
Кука — это лишь средство решения проблемы NAT. Так-то и модули userid и req_limit есть. Но только с lua можно произвольно расширять и уточнять логику, не ограничивая себя рамками подобных модулей.
Да, собственно, все основные моменты есть в посте. Что тут выкладывать-то :)
Я к тому, что может стоит оформить как OpenSource проект. Развивать, допиливать. После сделать морду. И люди подключатся. Сама по себе тема очень интересна. К примеру из подобного есть CloudFlare. Он не только баны вешать и от ддоса, но еще и как cdn.
CloudFlare — это авторы данного модуля, кстати. Идею я понял, подумаю.
Напишите потом сюда адрес репозитария, если надумаете ;)
Можно подписаться на мой github аккаунт) Я туда редко что выкладываю, но если что и будет по lua ценного — сразу можно будет узнать.
Подскажите, а lua скрипт интерпретируется каждый раз при вызове или один раз делается байт код, который и используется при обработке запросов.
Если говорить о luajit, то разово генерится сразу машинный код. Потому оно так шустро и работает.
Посмотрел еще раз документацию lua-nginx-module. github.com/openresty/lua-nginx-module#lualuajit-bytecode-support. /path/to/luajit/bin/luajit -b /path/to/input_file.lua /path/to/output_file.luac ---генерирует байт код. После чего появляется возможность подгружать именно бинарный файл в nginx. Интересно какова разница в производительности в вашем случае.
Sign up to leave a comment.

Articles