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