Я перехожу с Apache 2.2 на 2.4 и предпочел бы использовать "Require", чем использование, которое сейчас не рекомендуется. Allow
, Deny
.
Мой вопрос: как я могу разрешить доступ из набора IP-адресов или диапазонов, указав один адрес / диапазон на строку в файле конфигурации?
В Apache 2.2 я использовал:
Order deny,allow
Deny from all
Allow from 2001:1000:2000::1/64
Allow from 1.2.3.4
Allow from 1.2.3.10
Как это отразится на новом синтаксисе управления доступом?
В модернизация в документации есть четкая информация о том, как это сделать. Это также то, что следует прочитать, если потребуются какие-либо другие изменения конфигурации: https://httpd.apache.org/docs/2.4/upgrading.html
Также вам не нужно помещать разные IP-адреса или сети в отдельные строки. Совершенно приемлемо сделать следующее:
# Apache v2.2
Allow from 1.2.3.4 1.2.3.10
# Apache v2.4
Require ip 1.2.3.4 1.2.3.10
Наконец, по умолчанию несколько директив require обрабатываются так, как будто они находятся в <RequireAny>
block, поэтому, если вы не формируете более сложную вложенную группировку, вам не нужно ее добавлять. Хотя, конечно, вы можете пожелать уточнить. Ссылка: https://httpd.apache.org/docs/2.4/howto/auth.html#beyond
Дополнительная информация: еще одна мысль заключается в том, что при обновлении вы обязательно должны пройти всю свою конфигурацию (включая любые htaccess
файлы, которые у вас могут быть) и преобразовать старые директивы Apache v2.2 в директивы Apache v2.4, а затем закомментировать загрузку mod_access_compat
модуль. Смешивание директив v2.2 и v.24 может вызвать некоторые очень необычные проблемы, которые трудно устранить.
Я знаю, что это старый пост, но я думаю, что это может помочь с функциональным примером, который я всегда использую!
В apache 2.2 будет примерно так:
<Location />
Order deny, allow
allow from all
</Location>
<Location /adm>
Order deny, allow
deny from all
allow from myniceip
</Location>
<Location /disabled>
Order deny, allow
deny from all
</Location>
В apache 2.4 будет примерно так:
<Location />
require all granted
</Location>
#Note that you dont need to use require all denied
#to require only a group of ips..
<Location /adm>
require myniceip
</Location>
<Location /disabled>
Require all denied
</Location>