Каталог статей
Поиск по базе статей  
Статья на тему Интернет » Интересное в сети » Кто на&nb p;сервер к&nb p;нам пришел?

 

Кто на&nb p;сервер к&nb p;нам пришел?

 

 

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

При установке Apache в его файле конфигурации можно найти несколько команд, описывающих как стандартные, так и некоторые дополнительные логи. В первую очередь, это директивы LogFormat и CustomLog.

LogFormat, как можно догадаться из названия, задает формат, в соответствии с которым будут формироваться записи лога.

загрузка...

 

 

Вторым параметром этой директивы является название формата, которое затем можно будет использовать при описании требуемого лога. Например, в httpd.conf по умолчанию присутствует директива

LogFormat "%{Referer}i -> %U" referer

которая описывает формат лога с названием «referer». Если вы затем укажете серверу «задействовать» этот лог, указав, например,

CustomLog /var/log/httpd/referer_log referer

то сервер создаст файл /var/log/httpd/referer_log и будет туда записывать, откуда посетитель пришел и какой документ смотрел, в соответствии с описанным вами форматом лога.

Форматы логов, указанные в настройках по умолчанию, как правило, не очень удобны в «реальной жизни»Referer-лог — штука полезная, но, попытавшись его включить, вы, скорее всего, будете разочарованы: там появится большая куча записей, у которых вместо referer'a будет указан прочерк (если эта переменная не была передана), и еще большее количество записей, где в качестве referer'ов будут указаны страницы вашего же сайта. Не говоря уже о том, что будут указаны, среди прочего, и обращения к картинкам, файлам CSS и прочим «служебным» вещам, которые веб-мастера, как правило, не сильно интересуют. Значительно интереснее попытаться создать лог, в который бы записывались «честные» внешние ссылки на ваш сайт — это поможет, например, более грамотно работать с рекламой: вы сможете наглядно увидеть, на каких сайтах реклама вашего ресурса более эффективна.

Директива SetEnvIf устанавливает переменные среды в зависимости от указанных вами условийДля этого очень удобно использовать директиву SetEnvIf, которая устанавливает какую-то переменную окружения при выполнении указанных вами условий. Эта директива принимает три параметра: атрибут, который будет проверяться; регулярное выражение, которое будет использоваться как условие проверки; переменную, которую надо установить, если условие выполнено. Например, условие

SetEnvIf Request_URI ".*/img/.*" no_image

присвоит значение 1 переменной no_image, если в пути запрошенного документа находится директория ./img/.

Можно проверять самые разные параметры и в зависимости от результатов проверки выполнять те или иные действияВ качестве проверяемых атрибутов может использоваться любой заголовок, передаваемый браузером (например, Referer), или же переменные среды, используемые сервером Apache. Наиболее полезными из них являются Request_URI (URL, который был запрошен посетителем), Remote_Host (имя хоста, с которого пришел запрос — появляется, только если включена директива HostNameLookups), Remote_Addr (IP-адрес браузера посетителя) и Request_Method (метод запроса — например, POST или GET).

SetEnvIf по умолчанию устанавливает значение 1, но можно также установить любое другое значение, а также одновременно установить значение нескольких переменныхЗначение 1 присваивается переменной автоматически, но вы можете присвоить ей любое другое значение, просто указав, скажем, no_image=15. Кроме того, можно «за один заход» присвоить значения нескольким переменным, указав дополнительные имена в качестве четвертого, пятого и так далее параметров.

Теперь, вооружившись этой полезной директивой SetEnvIf, постараемся определить те записи, которые мы не хотим видеть в логе. Прежде всего, уберем пустые значения referer'a:

SetEnvIf Referer "^$" no_referer

После этого уберем записи, где в качестве referer'a указан наш собственный сайт:

SetEnvIf Referer ".*mysite\.ru.*" no_referer

И, наконец, «прибьем» ненужные служебные запросы:

SetEnvIf Request_URI ".*/img/.*" no_referer
SetEnvIf Request_URI ".*/css/.*" no_referer

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

C помощью директивы SetEnvIf можно отобрать те запросы, которые будут записываться в логИ теперь все, что нам осталось сделать — это «объяснить» серверу, что в лог надо писать только те обращения, которые не привели к установке переменной no_referer. Делается это очень просто — достаточно в директиве CustomLog указать необходимое условие:

CustomLog /var/log/httpd/referer_log referer env=!no_referer

Здесь первым параметром указан файл, в котором будет храниться наш лог, вторым — имя формата, который надо использовать, а третьим — проверка того факта, что переменная no_referer не была установлена во время предыдущих проверок.

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

%a — IP-адрес браузера посетителя;
%b — количество байт, переданных в ответ на запрос;
%f — путь файловой системы к запрошенному документу (может отличаться от запрошенного URL!);
%r — первая строка запроса (включает метод, запрошенный адрес и так далее);
%t — дата и время запроса;
%T — время, требуемое на выполнение запроса;
%U — запрашиваемый адрес (недостатком является «отбрасывание» переменных, которые идут после знака вопроса);
%v — имя сервера, обрабатывающего запрос (берется из директивы ServerName).

Кроме того, в описании формата можно использовать конструкцию %{header}i, которая подставит значение требуемого заголовка запроса (например, в стандартном формате referer-лога используется %{Referer}i, кроме того, довольно часто может быть полезен идентификатор браузера пользователя — %{User-Agent}i). Аналогично, можно включить в лог и значение какой-то переменной окружения, указав %{env_variable}e (естественно, что вместо «env_variable» надо указать имя требуемой переменной).

Всегда запускайте утилиту apachectl с параметром configtest перед перезапуском сервера — она предупредит вас в том случае, если вы допустили ошибку в файле конфигурации!Если по каким-то причинам вам не нравится формат даты, выдаваемой с помощью указания %t, то можно задать свой собственный, указав %{time}t. Здесь вместо «time» надо указать требуемый формат даты — как и с форматом логов, указывая формат даты можно использовать множество переменных, но чаще всего используются

%A и %a — полное и сокращенное название дня недели
%B и %b — полное и сокращенное название месяца
%d — число (без первых нулей)
%H — часы в 24-х часовом формате
%M — минуты
%m — номер месяца
%S — секунды
%w — порядковый номер дня недели (воскресенье — 0)
%Y — год (четыре цифры)

Вот и все. Теперь, осталось только отредактировать файл httpd.conf, запустить

/usr/local/apache/bin/apachectl configtest

чтобы убедиться, что вы не написали в конфигурации ничего, что сервер посчитал бы оскорбительным, и перезапустить сервер с помощью

/usr/local/apache/bin/apachectl restart

Удачи!



Статья получена: hostinfo.ru

загрузка...

 

 

Наверх


Постоянная ссылка на статью "Кто на&nb p;сервер к&nb p;нам пришел?":


Рассказать другу

Оценка: 4.0 (голосов: 16)

Ваша оценка:

Ваш комментарий

Имя:
Сообщение:
Защитный код: включите графику
 
 



Поиск по базе статей:





Темы статей






Новые статьи

Противовирусные препараты: за и против Добро пожаловать в Армению. Знакомство с Арменией Крыша из сэндвич панелей для индивидуального строительства Возможно ли отменить договор купли-продажи квартиры, если он был уже подписан Как выбрать блеск для губ Чего боятся мужчины Как побороть страх перед неизвестностью Газон на участке своими руками Как правильно стирать шторы Как просто бросить курить

Вместе с этой статьей обычно читают:

Mazda 3: Эй, товарищ, кто здесь крайний?

В тесте участвуют автомобили: Mazda 3 «Мазда-3» – необыкновенный автомобиль. Разве может обычная машина заставить покупателей томиться в ожидании полгода, а то и больше? «Продам очередь на «Мазду-3» за $500», – я то и дело натыкаюсь на подобные объявления.

» Японские автомобили - 2315 - читать


Кто надежнее среди «японцев»?

• Автомобили Toyota оказались самыми надежными и в ЯпонииИзвестно, что автомобили из Японии считаются самыми надежными в мире. Они имеют, конечно, ряд своих недостатков, но мало кто из водителей может сказать, что японские автомобили разваливаются. Однако стоит отметить, что большинство исследований качества машин тех или иных марок проводились, главным образом, в Америке или Европе.

» Японские автомобили - 3358 - читать


Кто самый дорогой в ремонте?

• Jaguar X-typeСтраховой институт безопасности движения США (IIHS) провел очередную серию так называемых «медленных» краш-тестов, которые имитируют столкновения автомобиля на небольшой скорости – самую распространенную аварию во всем мире. «Медленные» краш-тесты состоят из четырех тестов: автомобиль на скорости 7-8 миль в час врезается передним и задним бамперами в ровное неподвижное препятствием и тесты на столкновение с круглым или острым барьером (имитация удара о угол зда ...

» Японские автомобили - 3389 - читать


Кто стал автомобилем года

Кого же выбрали автомобилем года? В Америке: В конкурсе «Лучший легковой автомобиль 2001 года», проводимый американский журнал Motor Trend, победителем был признан Chrysler PT Cruiser.

» Японские автомобили - 2392 - читать


Кто бы ни пришел в Белый дом, проиграет доллар

"Я не знаю, как проголосуют американцы, но знаю, что тот, кто придет в Белый дом, должен будет незамедлительно провести экономические реформы, чтобы скорректировать довольно опасную и непосильную тенденцию: когда текущий дефицит в отношениях с другими странами достиг 5,7% национального дохода Америки, США поглощают целых 75% сбережений в таких странах, как Китай, Бразилия, Германия, Россия, Япония. Такой дисбаланс не имеет прецедентов и представляет собой ограничение для рос ...

» Управление и менеджмент - 1406 - читать



Статья на тему Интернет » Интересное в сети » Кто на&nb p;сервер к&nb p;нам пришел?

Все статьи | Разделы | Поиск | Добавить статью | Контакты

© Art.Thelib.Ru, 2006-2024, при копировании материалов, прямая индексируемая ссылка на сайт обязательна.

Энциклопедия Art.Thelib.Ru