有什么方法可以让 Apache 为单个文件夹创建访问日志?
此文件夹中的文件将被频繁访问,因此我宁愿避免使用任何类型的脚本来生成日志。
例如:
/folder
/folder/often_access.txt
/folder/often_access.exe
理想情况下,我希望 Apache 轮流保存这些文件的访问日志,即:
/folder/log/often_access.May2012.log
如果可能的话,我可以创建一个脚本来按需读取日志。
我无法使用子域名,因为这些文件必须通过 HTTPS,并且我们没有通配符证书。
有任何想法吗?
更新: 我预计其中一些文件的访问频率将超过每秒 10-20 次。这是一个更新通知程序。其中一个文件是一个巨大的二进制文件,另一个只是包含最新版本的文本。
答案1
你可以使用环境变量mod_setenvif。
但你为什么不应该呢? 这是一个巨大的安全风险! 例如,Apache 内置的此类功能会通过使文件句柄数量过载而打开 DoS 机会。在此示例中,假设您的服务器上一次只能打开 16 个文件。我现在可以通过遍历 、 、 来清除这些文件描述符/1
——Apache/2
现在/16
必须维护 16 个日志。
最安全的方法(但绝不是最节省资源的)是将每个请求传送到脚本:
CustomLog "|/some/script/for/parsing/logs" combined
这不会消除上述选项 - 但是它将允许您在日志存储位置方面拥有更多的灵活性,并减轻 Apache 在维护服务器稳定性方面的责任。
最后,你应该您要做的正是您不想做的——事后处理这些。您正在寻找的是某种聚合解析——即,哪些行处理一些独特的目录集。这实际上会使用多久?如果不经常使用,那么只查看grep
日志并显示其输出有什么问题?这些是您应该首先问的问题。