Apache vhost 特定的日志记录

Apache vhost 特定的日志记录

我有以下 apache 设置(在conf.d/owasp-modsecurity.conf):

SecAuditLog "/var/www/vhosts/${lowercase:%{SERVER_NAME}}/statistics/logs/modsec_audit.log"

当我这样做时,httpd -t出现以下错误:

/etc/httpd/conf.d/owasp-modsecurity.conf 第 15 行语法错误:ModSecurity:无法打开审计日志文件:/var/www/vhosts/${lowercase:%{SERVER_NAME}}/statistics/logs/modsec_audit.log

我的意图应该相当明显;我希望 mod_security 审计日志条目最终出现在特定于 vhost 的文件中。常规访问和错误日​​志已经实现了这一点(尽管我不知道如何实现)。

为了记录,我还盲目尝试了以下条目,但都没有起作用:$HOSTNAME ${SERVER_NAME} $SERVER_NAME$HOST

虽然,从某种意义上说,这些都是环境变量...难道不应该有一些东西来获取 Apache 内部变量吗?

相关链接

答案1

尝试将 SecAuditLog 条目放入每个虚拟主机的设置中。

类似这样(设置可能看起来有点不同,但这是一个基本设置)。您还可以检查其他日志条目(CustomLog、ErrorLog 等)以查找可以插入的通配符。

domain1.conf
============
<VirtualHost *:80>
  ServerAdmin [email protected]
  ServerName www.domain1.com

  SecAuditLog "/var/www/vhosts/domain1/statistics/logs/modsec_audit.log"
  # lots of more setting goes here
  # ...
</VirtualHost>

domain2.conf
============
<VirtualHost *:80>
  ServerAdmin [email protected]
  ServerName www.domain2.com

  SecAuditLog "/var/www/vhosts/domain2/statistics/logs/modsec_audit.log"
  # lots of more setting goes here
  # ...
</VirtualHost>

相关内容