nginx + lua
Владимир
nstrannik на yandex.ru
Вт Авг 25 17:54:47 UTC 2015
Добрый день!
Заметил странное. Использую nginx-1.8 и lua5.1
На уровне http, указан access_by_lua_file, некоторый обработчик,
который помимо прочего ведет статистику запросов.
Однако, если в конфигурации какого-либо вирт-хоста, указан
локейшен с кодом возврата, то этот запрос идет мимо обработчика access_by_lua_file.
Т.Е, вообще.
К примеру
server {
server_name sample.org;
location /test/ {
return 410;
}
... скип ...
в этом случае /test/ вообще не пройдет через access_by_lua_file :(
И обращение к sample.org/test/ мы не учтем.
Еще хотелось бы узнать, возможно ли в lua получить какие-то параметры загруженного
файла конфигурации nginx-а? Вроде ngx.config но не параметры сборки, а параметры из
текущего загруженного конфига nginx.conf.
Вопрос встал, когда возникла необходимость
в обработчике lua вести свой лог.
При проверке конфигурации
nginx -t -c /etc/nginx/nginx.conf
происходит инициализация lua модуля, создается файл лога.
Но вот проверка конфига идет с правами рута.
Соответственно, и файл лога получает владельца - рута.
А после рестарта nginx-а, воркер меняет пользователя (обычно на www-data в debian/ubuntu ),
и модуль lua после рестарта не может записать в свой лог.
Найти возможность получить параметр user из конфига nginx.conf стандартными средствами не удалось.
Пришлось завести еще один параметр в конфиг модуля lua (не парсить же nginx.conf самому)
Одинаковые параметры в разных конфигах - потенциальный источник ошибок imho
Тем более что в запущенном nginx-е эта инфа где-то есть наверняка, может быть я плохо искал.
Подробная информация о списке рассылки nginx-ru