Назад | Перейти на главную страницу

Объединение атрибутов SetEnvIF в Apache 2.4

Я бы хотел совместить следующие 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

Поскольку это не будет проблемой только с одной парой 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