我使用相同的 apache 安装运行多个域(通过 vhosts)。有些域需要与其他域不同的 mod_security 规则。在单独的 exceptions.conf 文件中,我收集了所有这些规则,并具有以下语法:
<Location "/test">
SecAuditEngine Off
SecRuleRemoveById 950134
SecRuleRemoveById 981265
SecRuleRemoveById 981289
SecRuleRemoveById 981244
SecAuditEngine RelevantOnly
</Location>
但是此规则将匹配所有域上的所有 /test 文件夹!但我只想将其限制到特定主机。如何在全局 exceptions.conf 文件中将这些规则仅限制到 vhost?
答案1
以下是一些不同的方法:
- 不要使用全局异常文件,而要将异常放在虚拟主机定义中
- 如果您想要一个与实际虚拟主机定义分开的异常文件,请不要将其包含在主服务器配置中 - 而是将其包含在虚拟主机内部。
- 不要使用
<Location>
,而要使用 SecRule 和ctl:ruleRemoveByID
操作。例如:
SecRule SERVER_NAME "somedomain\.com$" "@streq /test/.*" "ctl:ruleRemoveByID=981244"
如果可能的话,第一个将是迄今为止最简单的。