ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: логирование location



Hello!

On Wed, Jun 23, 2010 at 11:11:50PM +0700, Igor V. Fatkulin wrote:

> 
> Всем доброго времени суток.
> 
> Пытаюсь  сделать  запись  средствами  nginx  логирование  обращений  к
> определенному location, пытался сделать что-то типа:
> 
> location ~ ^/cgi-bin/script.cgi\?(.+)$ {
>          log_format  scriptlog '$http_referer';
>          access_log  logs/$1.log  scriptlog;
> }
> 
> по итогу  либо лог не создается, либо такое ощущение, что локейшн
> начинает  на  себя  сгребать  все  запросы  к скрипту, в результате все
> перестает работать.

Side note: ни разу не понятно какое отношение ваше письмо имеет к 
треду "Critical errors nginx под Windows 2003".  Если никакого - 
то зачем было отвечать в тред c In-Reply-To?

По существу:

1.  Вы неправильно понимаете как работают location'ы.  Для 
обработки запроса используется *только один location*.  Никакого 
волшебного склеивания конфигураций описанных в разных location'ах 
не происходит.

Если вы хотите чтобы запросы логгировались отдельно и отправлялись 
на апач - так и напишите в наиболее специфичном location'е для 
данных запросов.

2. При matching'е location'ов тестируется только путь из URL, 
т.е. "/cgi-bin/script.cgi".  Так что написанное про '\?(.+)' 
смысла не имеет и приведёт только к тому что данный location не 
будет срабатывать для запросов к /cgi-bin/script.cgi.

3. Регулярные выражения тут не нужны.  Идеально подойдёт location 
с проверкой точного совпадения.

Итого писать надо как-то так:

    location = /cgi-bin/script.cgi {
        access_log  /path/to/log  format;
        proxy_pass ...
    }

Если в имени log-файла действительно нужны аргументы запроса 
(настоятельно не рекомендую без нужды - это лишние открытия файлов 
на каждый запрос и лишний вектор для dos'а), то использовать 
переменную $args (aka $query_string).

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.