nginx статистика или запуск скрипта при скачивании определенного файла

Подскажите как сделать так, чтобы если запросили определенный файл. После его выдачи. nginx запустил скрипт с именем этого файла. вобщем есть несколько имен файлов. надо по ним статистику вести. сколько раз скачали.

1й вариант я вижу просматривать лог. с какой то периодичностью. раз в 10-30 минут

2й вариант перенаправлять запрос php а он отдает этот файл. а я уже там пишу статистику

может есть какой то еще вариант? хороший вариант был бы с каким то callback. файл скачан запустили сценарий


Ответы (1 шт):

Автор решения: Aleksey Vaganov

Используйте логирование.

  1. создайте кастомный формат лога директивой:
http {
...
   log_format counter '$time_local $request';
...
}
  1. Создайте location, в который попадали бы нужные файлы и добавьте логирование. Например:
location = /image.jpeg {
   access_log /var/log/image_requests.log counter flush=30s;
}
  1. дальше этот лог можно обработать башскриптом, который посчитает кол-во запросов каждого файла:
cat /var/log/image_requests.log | cut -f 2 -d ' ' | sort | uniq -c

Если нужны агрегированные данные по дням, месяцам или секундам, то для этого в логе добавил дату.

→ Ссылка