Серверы, действующие в качестве промежуточных звеньев между клиентами и веб-серверами, называются прокси-серверами {proxy servers, посредники). При использовании брандмауэра прямой веб-доступ часто блокируется.
Серверы, действующие в качестве промежуточных звеньев между клиентами и веб-серверами, называются прокси-серверами {proxy servers, посредники). При использовании брандмауэра прямой веб-доступ часто блокируется.
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: прокси-серверы и кэширование, настройки многосетевых серверов, виртуальные узлы.
Инструкции LogFormat определяют формат записей файла журнала. Инструкция LogFormat содержит два элемента: формат записи файла и метку, используемую внутри файла httpd.conf для указания на такую запись. Формат записи заключен в двойные кавычки и непосредственно следует за ключевым словом LogFormat. Формат состоит из постоянных подстрок (литералов) и переменных.
Файлы журналов представляют огромное количество информации о веб-сервере. Следующий набор строк из стандартного файла httpd.conf системы Solaris 8 определяет конфигурацию журнала:
Инструкция KeepAlive позволяет использовать постоянные соединения. В противном случае клиенту приходится создавать новое соединение с сервером для каждой ссылки, по которой переходит пользователь.
Файловые типы MIME и расширения файлов играют важную роль в процессе определения способа обработки файла сервером. Сегмент параметров MIME - важная часть файла httpd.conf, созданного для Solaris. Используются следующие инструкции:
Ключевое слово Fancylndexing в строке инструкции IndexOptions включает создание «красивого индекса» каталога для случаев, когда сервер Apache вынужден отправить индекс в ответ на запрос клиента.
Инструкция DocumentRoot определяет каталог, в котором хранятся документы веб-сервера. Из соображений безопасности файлы настройки хранятся в другом каталоге. Как мы уже видели, инструкция DocumentRoot в Solaris представлена следующим образом:
Изначально веб-сервер был спроектирован таким образом, что создавал отдельный процесс для обработки каждого запроса. Высокая нагрузка на вебсервер при этом неизбежно влекла высокую загрузку процессора системы и значительно снижала скорость ее реакции. Процессы httpd были способны свести к минимуму жизнедеятельность всей системы.
В этом разделе рассмотрены шесть различных инструкций в том виде, в каком они существуют в примере настройки нашей системы Solaris: