Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Apache Error: AH01797: client denied by server configuration (Require all granted missing) Linux / DevOps

Apache Error AH01797: client denied by server configuration — Авторизация

Обновлено: 18.08.2026  ·  Официальная база знаний

Пользователи получают ошибку 403 Forbidden при попытке открыть веб-страницу или выполнить POST-запрос. В error.log Apache фиксируется отказ подсистемы контроля доступа: [authz_core:error] [pid 1234:tid 5678] [client 10.0.0.1:54321] AH01797: client denied by server configuration: /var/www/site/index.php.

КомпонентОшибка конфигурацииРезультат анализа ядра
Контекст <Directory>Отсутствует блок авторизацииПрименяется глобальное правило безопасности по умолчанию (Deny)
Блок <Location>Пустой блок без директив доступаЯдро не находит ни одного успешного провайдера Require
Локальный .htaccessСмешивание директив Satisfy и RequireКонфликт логики авторизации Apache 2.2 и 2.4
  • Веб-сервер запрещает доступ, поскольку ни одно правило авторизации не вернуло статус AUTHZ_GRANTED.
  • В отличие от AH01630, ошибка AH01797 часто свидетельствует о полном отсутствии директив авторизации в цепочке конфигурации.
  1. Проверьте определение блока <Directory> для корня вашего виртуального хоста:
    <VirtualHost *:80>
        ServerName example.com
        DocumentRoot /var/www/example.com
    
        <Directory /var/www/example.com>
            Options -Indexes +FollowSymLinks
            AllowOverride All
            # Обязательная директива авторизации:
            Require all granted
        </Directory>
    </VirtualHost>
  2. Если доступ настраивается внутри блоков <Location> или <Files>, убедитесь, что в них явно прописан положительный критерий допуска:
    <Location /api/public>
        Require all granted
    </Location>
  3. Удалите устаревшие директивы Satisfy Any или Satisfy All из файлов .htaccess, заменив их на контейнеры <RequireAny> или <RequireAll>.
  4. Убедитесь, что модуль авторизации authz_core активирован в системе (по умолчанию включен в ядро).
  5. Проверьте конфигурацию на ошибки: sudo apache2ctl configtest.
  6. Перезагрузите демон: sudo systemctl reload apache2.
Принцип безопасности по умолчанию: Если к ресурсу применимы несколько блоков конфигурации и ни в одном из них не срабатывает положительное утверждение Require, Apache 2.4 автоматически блокирует запрос с кодом 403 и ошибкой AH01797 в журнале.
Практический опыт инженера: Если вы создаете псевдонимы через директиву `Alias /downloads /opt/storage`, всегда обязательно создавайте соответствующий блок `` с `Require all granted`.

Частые вопросы (FAQ)

В чем разница между AH01630 и AH01797?

AH01630 обычно возникает при явном срабатывании запрещающего правила (Require all denied или несовпадении IP), а AH01797 — когда в цепочке проверок вообще не было найдено ни одного применимого разрешающего правила Require.

Как объединить проверку IP-адреса и пароля в Apache 2.4?

Используйте блок <RequireAll> (требуется выполнение обоих условий) или <RequireAny> (достаточно выполнения хотя бы одного из условий).

Может ли директива AllowOverride None приводить к AH01797?

Да, если директива Require all granted находилась в файле .htaccess, но AllowOverride None запретил чтение этого файла сервером.

Как разрешить доступ всем, кроме определенных IP адресов?

Используйте: <RequireAll> Require all granted Require not ip 192.168.1.100 </RequireAll>.