SystemdDoctor
служба не работает apache конфигурация частое

Apache: Invalid command — не включён модуль

Сообщение Invalid command с именем директивы почти всегда означает не опечатку, а отсутствующий модуль. Директива существует, но её обрабатывает модуль, который не загружен.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Нужный модуль не включён

    Директивы вроде ProxyPass, RewriteRule, Header приходят из отдельных модулей. Без загрузки модуля Apache их не понимает.

  2. Модуль включён, но директива стоит не в том контексте

    Часть директив допустима только внутри блока каталога или виртуального узла. Вне него Apache считает их недопустимыми.

  3. Опечатка в имени директивы

    Реже, но бывает. Отличить помогает проверка: для неизвестного имени Apache сообщает, что директива не определена ни одним модулем.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Проверка конфигурации: файл, строка и текст ошибки.

sudo apachectl configtest

Список загруженных модулей.

sudo apache2ctl -M 2>/dev/null | sort

Состояние службы и код от обёртки.

systemctl status apache2 --no-pager -l | head -10

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Нужный модуль не включён
Почему происходит
Директивы вроде ProxyPass, RewriteRule, Header приходят из отдельных модулей. Без загрузки модуля Apache их не понимает.
Как проверить
Посмотрите сообщение и список включённых модулей.
sudo apachectl configtest
sudo apache2ctl -M 2>/dev/null | sort | head -30
Как исправить
Включите модуль и перезапустите службу. В Debian и Ubuntu это делается отдельной командой.
sudo a2enmod proxy proxy_http rewrite headers && sudo systemctl restart apache2
2. Модуль включён, но директива стоит не в том контексте
Почему происходит
Часть директив допустима только внутри блока каталога или виртуального узла. Вне него Apache считает их недопустимыми.
Как проверить
Посмотрите, где находится строка из сообщения.
sudo apachectl configtest
Как исправить
Перенесите директиву в допустимый контекст: сообщение обычно подсказывает, какой именно.
3. Опечатка в имени директивы
Почему происходит
Реже, но бывает. Отличить помогает проверка: для неизвестного имени Apache сообщает, что директива не определена ни одним модулем.
Как проверить
Посмотрите точное имя в сообщении.
sudo apachectl configtest 2>&1 | head -5
Как исправить
Исправьте имя директивы по документации Apache.

Пример вывода

Директива прокси без включённого модуля. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

× apache2.service - The Apache HTTP Server
     Active: failed (Result: exit-code) since Mon 2026-09-15 15:02:41 MSK; 1s ago

apachectl[4300]: AH00526: Syntax error on line 12 of /etc/apache2/sites-enabled/app.conf:
apachectl[4300]: Invalid command 'ProxyPass', perhaps misspelled or defined by a module not included in the server configuration

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация Apache: модули документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено директивой ProxyPass без включённого модуля.
    собственная проверка, systemd 255
    сверено 15 сентября 2026