Apache: Invalid command — не включён модуль
Сообщение Invalid command с именем директивы почти всегда означает не опечатку, а отсутствующий модуль. Директива существует, но её обрабатывает модуль, который не загружен.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Нужный модуль не включён
Директивы вроде
ProxyPass,RewriteRule,Headerприходят из отдельных модулей. Без загрузки модуля Apache их не понимает. -
Модуль включён, но директива стоит не в том контексте
Часть директив допустима только внутри блока каталога или виртуального узла. Вне него Apache считает их недопустимыми.
-
Опечатка в имени директивы
Реже, но бывает. Отличить помогает проверка: для неизвестного имени Apache сообщает, что директива не определена ни одним модулем.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Проверка конфигурации: файл, строка и текст ошибки.
sudo apachectl configtestСписок загруженных модулей.
sudo apache2ctl -M 2>/dev/null | sortСостояние службы и код от обёртки.
systemctl status apache2 --no-pager -l | head -10Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Директивы вроде
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
- Почему происходит
- Часть директив допустима только внутри блока каталога или виртуального узла. Вне него Apache считает их недопустимыми.
- Как проверить
-
Посмотрите, где находится строка из сообщения.
sudo apachectl configtest
- Как исправить
- Перенесите директиву в допустимый контекст: сообщение обычно подсказывает, какой именно.
- Почему происходит
- Реже, но бывает. Отличить помогает проверка: для неизвестного имени 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
Связанные ошибки
- status=1/FAILURE в systemd Код 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
- nginx: [emerg] unknown directive nginx не запускается: неизвестная директива в конфигурации. Опечатка, не тот контекст или отсутствующий модуль.
- Apache: правила .htaccess не действуют Файл .htaccess игнорируется: запрещён параметром AllowOverride, нет нужного модуля, файл не читается.
- Docker: unable to configure the Docker daemon with file daemon.json Демон Docker не запускается из-за ошибки в /etc/docker/daemon.json: неверный JSON или неизвестный ключ.
- Service has more than one ExecStart= setting Несколько команд запуска допустимы только при Type=oneshot. Как правильно заменить команду в переопределении.
- Unit file is bad и ошибки разбора unit-файла systemd не может разобрать unit-файл: неизвестные параметры, ошибки в секциях, недопустимые значения. Как найти проблемную строку.
- Unit is masked: служба запрещена к запуску Сообщение Unit is masked: unit заблокирован ссылкой на /dev/null. Как найти и снять маскировку.
- Unit … has no installation config: не включается автозапуск systemctl enable отказывает: в unit-файле нет секции [Install] или WantedBy. Как включить службу в автозапуск правильно.
Где встречается чаще всего
Источники
- Документация Apache: модули
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено директивой ProxyPass без включённого модуля.