我有以下 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>