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

Sergey Shepelev temotor на gmail.com
Ср Июн 23 20:54:10 MSD 2010


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

Локейшны не задают "дополнительную" обработку запроса. Они задают
единственную обработку.

Что-то вроде дополнительной обработки делают с помощью if, но
поскольку он очень хитрый, рекомендуется всеми силами избегать
использования if.

> Бэкендом стоит апач, который лопатит php и cgi.
>
> Как правильно составить описание локейшна, чтобы работа не прерывалась
> и писались нужные логи?
>

location ~ ^/cgi-bin/script.cgi\?(.+)$ {
        log_format  scriptlog '$http_referer';
        access_log  logs/$1.log  scriptlog;
        proxy_pass    http://somehost.ru:81/;
        proxy_set_header  X-Real-IP  $remote_addr;
}

>
> Кусок рабочего конфига
>        location / {
>            proxy_pass    http://somehost.ru:81/;
>            proxy_set_header  X-Real-IP  $remote_addr;
>        }
>
>        error_page   500 502 503 504  /50x.html;
>        location = /50x.html {
>            root   html;
>        }
>
>        location ~ /\.ht {
>            deny  all;
>        }
>
>        location ~* ^.+.(jpg|jpeg|gif|swf|ico|css|zip|tgz|gz|rar|bz2|doc|xls|iso|exe|pdf|ppt|txt|tar
Здесь ещё expires может быть весьма полезен. (аккуратно)
>            root   /path/to/webroot;
>        }
>


Подробная информация о списке рассылки nginx-ru