Я хотел бы объединить следующую конфигурацию 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
Согласно документации атрибут
директивы фактически принимает регулярное выражение, но в его разделе не приводится пример. Скорее это можно увидеть в разделе Переменные среды > Примеры . В вашем случае это будет:
SetEnvIF ^X-(?:Forwarded-For|Real-IP)$ ^(91\.148\.158\.226|77\.70\.95\.131) TRUSTED_IPS