禁用特定文件夹的访问日志记录 - centos 6 / apache 2.4

Posted

技术标签:

【中文标题】禁用特定文件夹的访问日志记录 - centos 6 / apache 2.4【英文标题】:disable access logging for specific folder - centos 6 / apache 2.4 【发布时间】:2017-11-30 19:52:34 【问题描述】:

我的一个域的特定文件夹中有一堆 php 脚本,这些脚本经常被访问(每秒点击 20 次以上),并且希望禁用所有这些(文件夹)的访问日志记录。我正在使用 CentOS 6 和 Apache 2.4 并且有 WHM/Cpanel。

我找到了有关如何使用环境变量和修改主机文件来执行此操作的信息,但我不确定如何根据我的需要进行自定义。

我想禁用 /home/username/public_html/folder1/folder2/(其中的所有内容)的日志记录。

这是我在网上找到的(将其放入 vhost 包含文件):

<IfModule mod_userdir.c> 
    UserDir public_html 
    SetEnvIf Request_URI "/nolog" dontlog
    CustomLog /var/log/apache2/useraccess_log combined env=!dontlog
</IfModule>

我感到困惑的一件事是我有不同的日志位置设置。例如,如果我查找/var/cpanel/userdata/username/domain.com,它会在顶部显示:

customlog: 
  - 
    format: combined
    target: /usr/local/apache/domlogs/domain.com
  - 
    format: "\"%%st %I .\\n%%st %O .\""
    target: /usr/local/apache/domlogs/domain.com-bytes_log
documentroot: /home/username/public_html
group: username
hascgi: 0
homedir: /home/username

鉴于不同的日志位置,我将如何实现这一点?当我这样做时,我不介意为此文件夹禁用字节日志的日志记录。考虑到它们被访问的频率,这会持续发生太多的日志记录,这对我根本没有用。

'username' 和 'domain.com' 在上面代表它们的实际值。

【问题讨论】:

【参考方案1】:

默认情况下,cPanel/WHM 将 cPanel 帐户(域/站点/等)的访问日志存储在 /usr/local/apache/domlogs/ 中。这意味着对该站点的所有请求都记录在该文件中(包括来自文件夹 1、文件夹 2 等的请求)。

你可以试试这样的:

/home/username/public_html/folder1/folder2/ 中创建一个 .htaccess 文件,内容如下:

<IfModule mod_userdir.c> 
    UserDir public_html 
    SetEnvIf Request_URI "/nolog" dontlog
    CustomLog /usr/local/apache/domlogs/domain.com combined env=!dontlog
</IfModule>

看看这是否有效(基本上它应该允许记录但排除来自文件夹 1、文件夹 2 等文件的请求)。

如果这不起作用,那么您可以编辑 /var/cpanel/userdata/username/domain.com 并注释 bytes_log 行和 access_log 行。这应该完全禁用该域的 http 请求的访问日志记录。您可能需要重新启动 httpd 和 cpanel 服务才能使更改生效。

【讨论】:

以上是关于禁用特定文件夹的访问日志记录 - centos 6 / apache 2.4的主要内容,如果未能解决你的问题,请参考以下文章

Linux centos7 VMware Apache访问日志不记录静态文件访问日志切割静态元素过期时间

是否可以为特定记录禁用/启用访问子表单中的控件?访问 2000 - VBA

如何在根级别禁用导入的模块日志记录

6.访问日志静态文件,访问日志切割,静态元素过期时间

禁用Azure App Services上的某些W3C日志记录字段

为特定请求/URL/端点禁用登录 gunicorn