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: прокси-серверы и кэширование, настройки многосетевых серверов, виртуальные узлы.