我想将以下SetEnvIF
配置合并为一行。可以这样做吗?
SetEnvIF X-Forwarded-For ^(91\.148\.158\.226|77\.70\.95\.131) TRUSTED_IPS
SetEnvIf X-Real-IP ^(91\.148\.158\.226|77\.70\.95\.131) TRUSTED_IPS
答案1
根据文档,attribute
该指令的实际上接受正则表达式,但其部分中没有给出示例。相反,可以在环境变量 > 示例. 您的情况是:
SetEnvIF ^X-(?:Forwarded-For|Real-IP)$ ^(91\.148\.158\.226|77\.70\.95\.131) TRUSTED_IPS
答案2
由于只有一对 IP 地址时不会出现问题,因此我假设您有许多 IP 地址需要查看,而不必将它们全部添加到两条单独的行中。
作为SetEnvIf
指示只有一个正确的语法,
SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...
无法在同一行添加两个属性。因此无法像您建议的那样合并这两行,也就是说无法缩短仅包含这两行的配置。但是,如果您有更长的 IP 地址列表,仍然可以缩短配置。
由于您有 Apache 2.4,因此您可以使用mod_macro首先创建一个这样的宏:
<Macro AddTrustedIP $ip>
SetEnvIF X-Forwarded-For ^($ip) TRUSTED_IPS
SetEnvIf X-Real-IP ^($ip) TRUSTED_IPS
</Macro>
然后对每个 IP 像这样使用它:
Use AddTrustedIP 91\.148\.158\.226
Use AddTrustedIP 77\.70\.95\.131