Apache Error AH01630: client denied by server configuration — Решение
Клиент при попытке доступа к веб-странице или API получает код 403 Forbidden. В системном журнале error.log Apache регистрируется запрет авторизации: [authz_core:error] [pid 1234:tid 5678] [client 192.168.1.50:45678] AH01630: client denied by server configuration: /var/www/html/admin.
| Конфигурация | Синтаксис Apache 2.2 (Устаревший) | Синтаксис Apache 2.4 (Актуальный) |
|---|---|---|
| Полный публичный доступ | Order allow,deny / Allow from all | Require all granted |
| Полный запрет доступа | Order deny,allow / Deny from all | Require all denied |
| Ограничение по IP | Allow from 192.168.1.0/24 | Require ip 192.168.1.0/24 |
- Apache блокирует обращение к директории на основе правил авторизации ядра (
mod_authz_core). - Сбой часто происходит после переноса сайта со старого сервера CentOS 6/Debian 7 на современный дистрибутив.
- Откройте конфигурационный файл виртуального хоста (
/etc/apache2/sites-available/site.confили/etc/httpd/conf.d/vhost.conf). - Найдите блок
<Directory>, соответствующий запрошенному пути, и добавьте директивуRequire all granted:<Directory /var/www/html> Options FollowSymLinks AllowOverride All Require all granted </Directory> - Проверьте локальные файлы
.htaccessв целевом каталоге на наличие устаревших директивDeny from allилиOrder:grep -rn "Deny from" /var/www/html/ - Если доступ должен быть ограничен конкретной подсетью, используйте современный синтаксис:
<Directory /var/www/html/admin> Require ip 192.168.1.0/24 10.0.0.5 </Directory> - Проверьте валидность синтаксиса:
sudo apache2ctl configtestилиsudo httpd -t. - Примените изменения:
sudo systemctl reload apache2 # или httpd.
Order/Allow/Deny в Apache 2.4 возможно только при активном модуле mod_access_compat. Однако смешивание старого и нового синтаксиса в одной конфигурации приводит к непредсказуемым блокировкам и ошибкам AH01630.Частые вопросы (FAQ)
Чем Require all granted отличается от Allow from all?
Require all granted — это нативная директива подсистемы авторизации Apache 2.4 (mod_authz_core), пришедшая на смену устаревшему механизму проверок mod_authz_host из Apache 2.2.
Может ли файл .htaccess вызывать AH01630?
Да, если внутри .htaccess прописана директива Require all denied, Deny from all или некорректное правило фильтрации по IP/хосту.
Как разрешить доступ только авторизованным пользователям или локальной сети?
Используйте контейнер <RequireAny>: Require ip 192.168.1.0/24 и Require valid-user внутри него.
Что делать, если DocumentRoot расположен вне стандартного каталога /var/www?
Вам необходимо явно создать блок <Directory /ваш/кастомный/путь> с параметром Require all granted в главном конфигурационном файле.