Объединение атрибутов 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
0
задан 29 March 2017 в 12:17
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
0
ответ дан 5 December 2019 в 08:23

Согласно документации атрибут директивы фактически принимает регулярное выражение, но в его разделе не приводится пример. Скорее это можно увидеть в разделе Переменные среды > Примеры . В вашем случае это будет:

SetEnvIF ^X-(?:Forwarded-For|Real-IP)$ ^(91\.148\.158\.226|77\.70\.95\.131) TRUSTED_IPS
1
ответ дан 24 February 2021 в 00:39

Теги

Похожие вопросы