Apache 2.4 中 SetEnvIF 的组合属性

Apache 2.4 中 SetEnvIF 的组合属性

我想将以下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

相关内容