Apache Linux

Apache: AH01630 client denied by server configuration

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Сообщение «client denied by server configuration» в журнале Apache означает, что правила Require или Deny запретили доступ клиенту. Проверьте блоки Directory и Location, ограничения по IP, .htaccess и прокси: настоящий IP клиента может быть скрыт за CDN.

В этой статье
  1. Отличие от общего 403
  2. Возможные причины
  3. Порядок
  4. Отладка
client denied by server configuration
AH01630: client denied by server configuration: /var/www/html/admin/
По-русскиКонфигурация сервера запрещает доступ.

#Отличие от общего 403

Эта запись в журнале означает, что запрет создан именно правилами авторизации по хосту: Require, Deny, Order. Это отличает её от 403 из-за прав файловой системы, где в журнале будут AH00035 или Permission denied. Если доступ закрыт к отдельному разделу (например, /admin/), скорее всего, ограничение по IP задано намеренно, но IP клиента определяется неверно, если сайт находится за прокси, CDN или балансировщиком: Apache видит адрес прокси, а не посетителя.

#Возможные причины

Возможная причинаКак узнатьЧто делать
Require all deniedЗакрыто намеренно или по ошибке.Закрыт весь раздел.Измените правило.
Ваш IP не в спискеДинамический адрес.Раньше работало.Обновите список.
Прокси скрывает реальный IPCDN, балансировщик.Блокируется адрес прокси.Настройте mod_remoteip.
Смешаны Order и RequireСтарые и новые директивы.Непредсказуемый результат.Оставьте Require.
Правило в .htaccessОтдельный каталог.Конфиг чист, запрет есть.Проверьте .htaccess.
IPv6 вместо IPv4Клиент пришёл по IPv6.Список только для IPv4.Добавьте IPv6.

#Порядок

  1. Найдите строку в error.log и запомните путь и IP клиентаПо SSH найдите строку AH01630 в журнале Apache именно в момент запроса: sudo grep AH01630 /var/log/apache2/error.log | tail -n 20 на Debian/Ubuntu, на RHEL проверьте /var/log/httpd/error_log. Запишите путь, удалённый IP и применяемый виртуальный хост; отказ может быть намеренным правилом защиты.
  2. Найдите применяемые к запросу правила доступа ApacheВыполните apachectl -S, определите виртуальный хост и откройте его конфигурацию. Сравните <Directory>, <Location>, <Files> и разрешённые .htaccess для пути, который указан в ошибке; более конкретная секция может изменить результат. Не добавляйте безусловное Require all granted для закрытых административных разделов.
  3. Проверьте директивы Require: Require all denied, Require ip, Require notНайдите все относящиеся к пути директивы Require: Require all denied, Require ip, Require host, отрицательные требования и контейнеры <RequireAll>/<RequireAny>. Определите, какая именно проверка отказывает настоящему клиенту, затем исправляйте только её — без отключения авторизации для других пользователей.
  4. Проверьте старые Order/Deny/Allow: при смешивании с Require результатЕсли конфигурация перенесена с Apache 2.2, проверьте старые Order, Deny, Allow и наличие mod_access_compat. Механически смешивать их с Require нельзя: приоритет зависит от действующих контейнеров. На стенде переведите правило на синтаксис Apache 2.4 и проверьте доступ разрешённого и запрещённого клиента.
  5. Если сайт за прокси или CDN, включите mod_remoteip и настройтеЕсли Apache стоит за доверенным балансировщиком/CDN, в журнале может появляться IP прокси вместо клиента. Прежде чем включать mod_remoteip, проверьте точные адресные диапазоны ваших доверенных прокси и маршрут. Не доверяйте любому входящему X-Forwarded-For из Интернета: это позволит подделывать IP при проверке доступа.
  6. Добавьте свой IP в список разрешённыхЕсли раздел должен быть доступен лишь администратору, укажите именно его актуальный публичный IP или одобренную сеть в соответствующем Require ip после подтверждения и резервного копирования. Не вставляйте примерные диапазоны 203.0.113.0/24 как рабочие адреса; адрес может меняться, поэтому предусмотрите безопасный дополнительный способ администрирования.
  7. Проверьте порядок слияния блоков: Location имеет приоритет над DirectoryУчитывайте, что Apache объединяет секции не просто по порядку строк: конфигурация <Location> может переопределять файловые ограничения <Directory>. Перед редактированием изучите фактическую структуру и вывод apachectl -S, особенно если есть прокси и вложенные .htaccess.
  8. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Поиск директив доступа в конфигурации сайта
    Linux · Терминал (Bash)КомандаНужен sudo
    Поиск директив доступа в конфигурации сайта
    sudo grep -RnE "Require|Order|Deny from|Allow from" /etc/apache2/ /var/www/example.ru/public/.htaccess 2>/dev/null
    Вариант 2Последние записи об отказе с IP клиента
    Linux · Терминал (Bash)КомандаНужен sudo
    Последние записи об отказе с IP клиента
    sudo grep "AH01630" /var/log/apache2/error.log | tail -10
    Вариант 3Разрешить доступ к админке только с вашей сети и с офисного IP
    ТекстКоманда
    Разрешить доступ к админке только с вашей сети и с офисного IP
    <Location "/admin">
    Require ip 203.0.113.0/24
    Require ip 198.51.100.7
    </Location>
    Вариант 4Определение реального IP за прокси или CDN (замените доверенные адреса)
    ТекстКоманда
    Определение реального IP за прокси или CDN (замените доверенные адреса)
    RemoteIPHeader X-Forwarded-For
    RemoteIPInternalProxy 10.0.0.0/8
    Вариант 5Включить модуль и применить
    Linux · Терминал (Bash)КомандаНужен sudo
    Включить модуль и применить
    sudo apache2ctl configtest && sudo systemctl reload apache2
    # mod_remoteip включайте только при подтверждённом доверенном прокси и списке его реальных IP.
  9. Перезагрузите конфигурациюСохраните конфигурацию и выполните sudo apachectl configtest, затем при Syntax OK — sudo systemctl reload apache2 (Debian) или httpd (RHEL). Проверьте страницу разрешённым пользователем и отдельно запрещённым, чтобы исправление AH01630 не открыло ранее закрытый ресурс.

#Отладка

Увеличьте детализацию журнала для модуля авторизации: LogLevel authz_core:debug в виртуальном хосте. В журнале появятся причины каждого решения. После отладки верните значение warn, чтобы не раздувать файл. Проверьте реальный IP посетителя, который видит Apache: добавьте в LogFormat переменную %a (клиентский IP) и сравните с ожидаемым.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.