логика работы директивы map

Igor Sysoev is at rambler-co.ru
Tue Dec 20 15:59:46 MSK 2005


On Tue, 20 Dec 2005, Anton Ageev wrote:

> Здравствуйте, Игорь.
>
>>> Предположим в nginx.conf записано:
>>>
>>> map $x $y {
>>>    default 0;
>>>    include bla-bla.map;
>>> }
>>>
>>> В виду того, что map прописывается в секции http, а переменную $x (в
>>> случае если она не встроенная), можно инициализировать set-ом только
>>> самое ранее в секции server, в лог лезут вот такие ошибки:
>>>
>>> 2005/12/20 03:45:30 [alert] 3129#0: *1339 using uninitialized "x"
>>> variable while reading client request line, client: 82.227.92.102,
>>> server: ***
>>> 2005/12/20 03:45:53 [alert] 3129#0: *1427 using uninitialized "x"
>>> variable while closing request, client: 84.204.116.166, server: ***,
>>> URL: "***", host: "***", referrer: "***"
>
> IS> Как используется $y ? Я не могу понять, как переменная используется
> IS> на стадии "reading client request line" и "closing request".
>
> Переменная $y используется в двух местах:
> 1. в if-е в секции location
> 2. пишется в access-лог (директива access_log прописана в секции
> http)

Понятно. На стадии логирования и есть "closing request".
А вот "reading client request line" пока непонятно.

>>> Предлагаю сделать так, чтобы в случае, если map видит
>>> неинициализированную переменную $x, то переменной $y автоматически
>>> подставлялось default значение.

Я бы сделал так:
1) описал бы два формата - с переменной и без.
2) описал бы access_log с переменной в том сервере, где переменная
    используется.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list