Новый контроль доступа в Apache 2.4

Поговорим об изменениях в конфигурационных директивах веб сервера Apache версии 2.4. Дело в том, что они существенно изменились и настройка доступа к сайтам в Apache 2.4 производится иначе чем это это было в версии 2.2.

Пожалуй целесообразнее было бы назвать пост, что то вроде изменения контроля доступа в Апач версии 2.4, ну да ладно. Так вот о чём я. Всё дело в том, что директивы доступа немного изменились и если вы будите использовать старый синтаксис определения директорий, то рискуете нарваться на ошибку 403 Forbidden (Доступ Запрещён или access denied). Казалось бы вы всё настроили правильно и всё равно получаете сообщение Forbidden при попытке получить доступ к сайту. В чём же дело? Именно в различиях версий Apache.

В общем не буду долго разглагольствовать, просто приведу примеры кодов с переведёнными разъяснениями с официального сайта Apache и всё сразу станет ясно.

Контроль доступа

В версии 2.2 контроль доступа базировался на клиентском хост нейме, IP адресе, и других характеристиках клиентских запросов. Так же использовались директивы Order, Allow, Deny и Satisfy.

В 2.4, такой контроль доступа осуществляется таким же образом, как и другие проверки авторизации с использованием нового mod_authz_host модуля. Старые идиомы управления доступом должны быть заменены новыми механизмами аутентификации, хотя для совместимости со старыми конфигурации, новый модуль mod_access_compat предоставляется так же в комплекте.

Here are some examples of old and new ways to do the same access control.

Далее приводятся примеры старого и нового «контроля доступа».

В этом примере, все запросы запрещены.

2.2 configuration:

Order deny,allow
Deny from all

2.4 configuration:

Require all denied

В этом примере все запросы разрешены.

2.2 configuration:

Order allow,deny
Allow from all

2.4 configuration:

Require all granted

Следующий  пример разрешает доступ с домена example.loc, все остальные хосты запрещены

2.2 configuration:

Order Deny,Allow
Deny from all
Allow from example.loc

2.4 configuration:

Require host example.loc

На этом собственно и вся разница в контроле доступа между версиями Apache 2.2 и 2.4.