Назад | Перейти на главную страницу

Отдельный журнал доступа к папке в Apache

Есть ли способ заставить Apache создавать журнал доступа для одной папки?

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

Примером может быть что-то вроде:

/folder
/folder/often_access.txt 
/folder/often_access.exe

В идеале я бы хотел, чтобы Apache вел журнал доступа к этим файлам по очереди, т.е.

/folder/log/often_access.May2012.log

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

Я не могу использовать поддомен, так как эти файлы должны проходить через HTTPS, а у нас нет сертификата с подстановкой.

Любые идеи?

ОБНОВИТЬ: Я ожидаю, что к некоторым из этих файлов будут обращаться чаще, чем 10-20 раз в секунду. Это уведомление об обновлении. Один из этих файлов представляет собой огромный двоичный файл, а другой - просто текст, содержащий последнюю версию.

Вы мог использовать переменные среды с mod_setenvif.

Но почему бы и нет? Это огромный риск для безопасности! Например, такая функция, встроенная в Apache, откроет возможность DoS за счет перегрузки количества дескрипторов файлов. В этом примере предположим, что на вашем сервере одновременно может быть открыто только 16 файлов. Теперь я могу стереть эти файловые дескрипторы, повторяя /1, /2, /16- теперь Apache должен вести 16 журналов.

Самый безопасный способ (но отнюдь не самый ресурсосберегающий) - передать каждый запрос по конвейеру:

CustomLog "|/some/script/for/parsing/logs" combined

Это не устранит перечисленные выше параметры, но позволит вам иметь гораздо больше гибкости в том, куда идут журналы, а также снизит ответственность Apache за поддержание стабильности вашего сервера.

Наконец, что ты должен делать именно то, что вы не хотите делать - обрабатывать их постфактум. То, что вы ищете, - это своего рода агрегированный синтаксический анализ, то есть какие строки имеют дело с некоторым уникальным набором каталогов. Как часто это будет реально использоваться? Если это не часто, что не так с просто grepведете журналы и отображаете их вывод? Вот какие вопросы вам следует задать в первую очередь.