Переписывание ACL Apache 2.4 из 2.2
Сервер
Published: 2021-02-02

В прошлом я делал личные заметки.
С помощью mod_access_compat в Apache 2.4 можно настраивать ACL с помощью Allow Deny.

Переписывание ACL с Apache 2.2 на 2.4

Разрешить всё

  • Apache 2.2
<Directory "/home/www">
    Order allow,deny
    Allow from all
</Directory>
  • Apache 2.4
<Directory "/home/www">
    Require all granted
</Directory>

Запретить всё

  • Apache 2.2
<Directory "/home/www">
    Order deny,allow
    Deny from all
</Directory>
  • Apache 2.4
<Directory "/home/www">
    Require all denied
</Directory>

Разрешить конкретный IP-адрес

  • Apache 2.2
<Location /admin>
  Order allow,deny
  Deny from all
  Allow from 127.0.0.1
</Location>
  • Apache 2.4
<Location /admin>
  Require ip 127.0.0.1
</Location>

Для имен хостов можно написать, например, Require Host example.jp.

Ограничения с использованием переменных окружения

  • Apache 2.2
<Location /admin>
  SetEnvIf User-Agent ^IamAdmin/0¥.1 admin_ok
  Order deny,allow
  Deny from all
  Allow from env=admin_ok
</Location>
  • Apache 2.4
<Location /admin>
  SetEnvIf User-Agent ^IamAdmin/0¥.1 admin_ok
  Require env admin_ok
</Location>

Разрешить при выполнении одного из нескольких условий

  • Apache 2.2
<Location /admin>
  Order deny,allow
  Deny from all
  Allow from 192.168.1
  Require group admin
  Satisfy any
</Location>
  • Apache 2.4
<Location /admin>
  <RequireAny>
    Require ip 192.168.1
    Require group admin
  </RequireAny>
</Location>

Кроме RequireAny также существует RequireAll, который применяется, когда должны совпадать все условия.

Ссылки для справки