将mod_security规则限制为仅一个虚拟主机

我运行几个(通过虚拟主机)相同的Apache安装。 有些域需要不同的mod_security规则。 在一个单独的exceptions.conf文件中,我收集了所有这些规则,并且具有以下语法:

<Location "/test"> SecAuditEngine Off SecRuleRemoveById 950134 SecRuleRemoveById 981265 SecRuleRemoveById 981289 SecRuleRemoveById 981244 SecAuditEngine RelevantOnly </Location> 

但是这个规则将匹配所有域的所有/testing文件夹! 但我只想限制它到一个特定的主机。 我只能在全局的exceptions.conf文件中将这些规则限制为一个虚拟主机?

以下是一些不同的方法来做到这一点:

  • 而不是拥有一个全局的exception文件,把这些exception放入虚拟主机定义中
  • 如果您希望将exception文件与实际的虚拟主机定义分开,请不要将其包含在主服务器configuration中 – 而应将其包含在虚拟主机中。
  • 而不是使用<Location> ,使用SecRule和ctl:ruleRemoveByID操作。 例:

SecRule SERVER_NAME "somedomain\.com$" "@streq /test/.*" "ctl:ruleRemoveByID=981244"

如果可能的话,第一个将是最简单的。