nginx статистика или запуск скрипта при скачивании определенного файла
Подскажите как сделать так, чтобы если запросили определенный файл. После его выдачи. nginx запустил скрипт с именем этого файла. вобщем есть несколько имен файлов. надо по ним статистику вести. сколько раз скачали.
1й вариант я вижу просматривать лог. с какой то периодичностью. раз в 10-30 минут
2й вариант перенаправлять запрос php а он отдает этот файл. а я уже там пишу статистику
может есть какой то еще вариант? хороший вариант был бы с каким то callback. файл скачан запустили сценарий
Ответы (1 шт):
Автор решения: Aleksey Vaganov
→ Ссылка
Используйте логирование.
- создайте кастомный формат лога директивой:
http {
...
log_format counter '$time_local $request';
...
}
- Создайте location, в который попадали бы нужные файлы и добавьте логирование. Например:
location = /image.jpeg {
access_log /var/log/image_requests.log counter flush=30s;
}
- дальше этот лог можно обработать башскриптом, который посчитает кол-во запросов каждого файла:
cat /var/log/image_requests.log | cut -f 2 -d ' ' | sort | uniq -c
Если нужны агрегированные данные по дням, месяцам или секундам, то для этого в логе добавил дату.