Подскажите, как можно реализовать такую штуку. Вот есть правило Код (Text): location /download/ { тут всякое... rewrite путь к файлу } Если я добавлю сюда строку с ведением логов, и укажу писать туда размер отправленных клиенту данных - то всё прекрасно работает. То есть будел лог и в нём будет сколько данных передано. Но потом мне приходится парсить лог по крону, а строк много... Я поставил модуль для работы с mysql для того что бы учитывать что файл скачали. Но мне ещё нужно записывать в поле юзеру, сколько он скачал. И вот я делаю это по крону парся логи. Можно ли как то отловить вот этот самый момент записи в лог в самом nginx и выполнить там mysql_query что бы не писать в лог вообще. То есть получается что не момент записи надо, а запись убрать совсем, а отловить момент когда переменная $bytes_sent содержит число отправленных данных и произошел конец передачи данных или разрыв соединения. Добавлено спустя 10 минут 22 секунды: Вот нашел такую штуку http://nginx.org/ru/docs/http/ngx_http_addition_module.html Код (Text): синтаксис: add_after_body uri; умолчание: — контекст: location Добавляет после тела ответа текст, выдаваемый в результате работы заданного подзапроса. Можно ли это использовать? Например указать там другой локейшен в котором будет запись в базу данных или вообще вызывать скрпит пхп, который в ответ не чего не вернёт но от url выполнит вставку в базу?
http://wiki.nginx.org/HttpCoreModule#post_action Но советую прочесть http://forum.nginx.org/read.php?21,161429 до конца и еще погуглить. К советам Maxim Dounin стоит прислушиваться.
Код (Text): location ~ /d/(.+)/(.+) { post_action /on_d?a=$2 post_action /on_d2/$2 } location /on_d1 { //тут переменная $arg_a пуста } location ~ /on_d2/(.+) { //тут $1 = "$2" }