Apache также поддерживает занесение сведений в журнал по условию, позволяя указать поля, значения которых фиксируются, только когда сервер возвращает клиенту определенный код состояния. Коды состояний перечислены в табл.11.2. Таблица 11.2. Коды состояний сервера Apache

Код состояния Значение
200: OK Корректный запрос
302:Found Документ не найден
304: Not Modified Указанный документ не был изменен
400: Bad Request Некорректный запрос
401: Unauthorized Клиенту или пользователю отказано в доступе
403: Forbidden Недостаточно полномочий для доступа
404: Not Found Указанный документ не существует
500 Server Error Неустановленная ошибка в работе сервера
503: Out of Resources (Service Unavailable) Недостаточно серверных ресурсов для выполнения запроса
501: Not Implemented Отсутствует функциональность, Необходимая для обработки запроса
502: Bad Gateway Клиент указал некорректный шлюз

Чтобы поставить поле в зависимость от условия, добавьте один или несколько кодов состояний в спецификацию поля в инструкции LogFormat. Если используется список, разделяйте коды состояний запятыми. Предположим, необходимо записывать название броузера только в том случае, если броузер запрашивает службу, не реализуемую сервером. Используйте код состояния Not Implemented (501) в сочетании с заголовком User-agent следующим образом:

%501{User-agent}i

Если такое значение присутствует в операторе LogFormat, название броузера записывается в журнал только для кода состояния 501. Восклицательный знак перед кодом (или кодами) состояния предписывает регистрировать поле только в случае, когда действительный код состояния не равен одному из перечисленных значений. К примеру, чтобы фиксировать адрес сайта, с которого пользователь пришел на вашу веб-страницу, только в случаях, когда код состояния сигнализирует об ошибке, добавьте следующий фрагмент в спецификацию LogFormat:

%!200,302,304{Referer}i

Данная конкретная условная запись журнала весьма полезна, поскольку позволяет определить, что на внешней странице существует некорректная ссылка на ваш веб-сайт.

Используйте эти возможности совместно с форматом common для создания более содержательных записей журнала. Вот так мы изменили формат Solaris combined, включив в него регистрацию по условию:

LogFormat "%h %1 %u %t \"%r\" %>s %b \"%!200,3021304{Referer}i\" \"%{User-Agent}i\" " combined

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

Файл настройки сервера Apache в Solaris содержит более 160 активных строк, но при этом есть ряд интересных возможностей Apache, которые в настройках Solaris не используются. Прежде чем мы перейдем к важным повседневным вопросам обеспечения безопасности сервера и наблюдения за работой сервера, проведем краткий обзор трех возможностей, не включенных в стандартную настройку Solaris: прокси-серверы и кэширование, настройки многосетевых серверов, виртуальные узлы.