Как исправить ошибки Apache mod_authz_host в Linux



Попробуйте наш инструмент устранения неполадок

При установке службы apache2 в Red Hat Enterprise Linux, Arch, Scientific Linux, Debian Server, Ubuntu Server или в любом другом поддерживающем ее дистрибутиве вы можете обнаружить ошибку, связанную с модулем mod_authz_host, который предотвращает выполнение службы. . Вы, вероятно, столкнетесь с этой ошибкой каждый раз, когда перезапустите службу apache2. Эта ошибка обычно появляется в виде синтаксического предупреждения о первой строке файл, но теоретически вы можете получить другую ошибку.



Независимо от того, с какой строкой у вас могут возникнуть проблемы, исправление имеет мало общего с тем, что mod_authz_host не установлен или даже не загружен в ОЗУ. Фактически, если вы получаете эту ошибку, это означает, что служба сервера apache2 правильно загружает модуль. Проблема просто связана с тем, что директива где-то неуместна, и изменение кода должно решить вашу проблему довольно быстро. Обратите внимание, что иногда вы будете видеть инструкции по установке mod_authz_host в apache2, что не имеет отношения к этому обсуждению. Ваши ошибки возникают не из-за отсутствия определенного пакета и не из-за какой-либо невыполненной зависимости. То, как разработчики сформулировали эти ошибки, привело к этим распространенным заблуждениям.



Исправление директив модуля restrict.conf

Для обсуждения мы будем использовать энциклопедию дистрибутива Linux по адресу distrowatch.com для наших примеров. В официальной документации apache2 в качестве примера используется dev.example.com, и в любом случае вы не захотите использовать ни один из этих адресов.



Открыть файл в текстовом редакторе. Поскольку он находится в защищенном каталоге, вам потребуется root-доступ. Мы использовали , но вы также можете использовать vi или другой текстовый редактор, который вам больше нравится. Вам даже не обязательно использовать консольный редактор, но обязательно используйте gksu вместо sudo, если это необходимо.

После того, как вы загрузили файл, обратите внимание на то, что читается, например:



Заказать отказать, разрешить

Запретить всем

Разрешить с distrowatch.com

Этот текст должен существовать только внутри блоки. Обратите внимание на пробел в первом теге. Если у вас есть эта строка текста, плавающая вне каких-либо блоков, либо добавьте вокруг нее теги, либо переместите ее так, чтобы она читалась как таковая:

Заказать отказать, разрешить

Запретить всем

Разрешить с distrowatch.com

Помните, что вам нужно будет заменить distrowatch.com на фактический URL, с которым вы работаете. Если вы обнаружите какие-либо строки, которые напрямую ссылаются на dev.example.com, значит, вы либо скопировали их непосредственно из примера кода, либо они добавлены по умолчанию. Домен example.com существует только для иллюстрации в технических документах и ​​не служит реальной цели. Официальная документация на httpd.apache.org/docs/2.2/howto/access.html действительно ссылается на них. Вероятно, вы можете безопасно удалить их при добавлении нового текста в.

Если вам когда-нибудь понадобится включить каталог в файл restrict.conf, вы можете заменить теги с теги, но вам нужно еще раз сохранить пробел в первом теге. Обязательно сохраните документ, а затем закройте его перед перезапуском службы apache2. С этого момента у вас не должно быть никаких проблем.

Это то, что имеет в виду сервер apache, когда возвращает ошибку, например:

Фактическая ошибка будет иметь номер строки вместо octothorpe, но это означает, что директивы небезопасно заключены в указанные теги. Вы можете перейти непосредственно к строке, указанной в ошибке, при отладке скрипта, чтобы проверить, что с ней не так. Хотя рассматриваемая ошибка сообщит вам, что журнал ошибок Apache может содержать больше информации, он, вероятно, просто подкрепит те же концепции, обсуждаемые здесь.

Аналогичным образом можно исправить будущие синтаксические ошибки. Вы можете обнаружить, что после исправления этого служба apache2 выдает еще одну ошибку. Это нормально, как бы странно это ни звучало, потому что он выполняет код только до первой строки, в которой обнаруживает проблему. Если бы в дальнейшем были проблемы, они бы никогда не дошли до них. Если у вас возникнут такие проблемы, обратите особое внимание на номер строки при редактировании файл. Если вы используете nano для редактирования файла, вы всегда можете удерживать клавишу Ctrl и нажимать клавишу C, чтобы найти строку, на которой находится ваш курсор. Это сделает процесс отладки намного более плавным.

Вы можете обнаружить, что у вас есть несколько блоков, плавающих таким образом, что они ни к чему не привязаны. На каждом из них должны быть бирки. Удалите лишние блоки в любое время, когда обнаружите, что у вас есть несколько копий одного и того же URL-адреса с одинаковыми точными директивами, поскольку эти дубликаты потенциально могут вызвать проблемы. Обычно вам нужно иметь только одну копию любого конкретного URL-адреса, поскольку вам не следует передавать дополнительные директивы об одном на сервер apache2, поскольку они могут в конечном итоге противоречить друг другу.

3 минуты на чтение