Gena Makhomed
August 19, 2013 06:16AM
On 18.08.2013 23:49, Михаил Монашёв wrote:

>>> Опишу задачу. Мне надо было как-то писать в аксес-лог кэш-зону, чтобы
>>> потом по логам считать эффективность каждой кэш-зоны. Встроенную
>>> переменную я не знаю, поэтому решил создать переменную через set. Там,
>>> где запросы проксируются, я присваивал через set соответствующей
>>> переменной значение, равное имени кэшзоны. Но не все запросы
>>> проксируются и в логе вместо значения переменной пишется пустая
>>> строка, что неудобно для парсинга лога. Брать переменную в кавычки
>>> тоже неудобно.

для этих целей - проще всего было бы создать
встроенную переменную с дефолтовым значением "-".

или, если значение какой-то (любой) переменной
не определено - писать в лог ее значение в виде "".

>>> Для таких запросов я хотел присвоить этой переменной дефолтное
>>> значение "-". Писать в каждом блоке server{} set или include посчитал
>>> лишним и вставил в http{} вот такие строчки:
>>>
>>> # set нельзя делать на уровне http, поэтому делаем присваивание через map
>>> map 1 $cache_zone_for_logging {
>>> default "-";
>>> }
>>>
>>> Т.е. я хотел использовать set для инициализации переменной, которая
>>> потом может меняться.
>>>
>>> На мой примитивный взгляд кажется нелогичным иметь иерархию блоков
>>> конфига, иметь наследование с вышестоящих уровней иерархии и разрешать
>>> set-у работать на уровне http{}.

если "присваивание через map" работает - то это нормальный workaround.
то есть, сейчас это ситуация "нельзя, но если очень хочется, то можно".

>> Вводить директиву set на уровне http с совершенно другой семантикой
>> - это не очень хорошая идея.

> Зачем другая семантика. Оставить всё как есть, только дать возможность
> писать в конфиге set на уровне http{}. Это удобно, логично, упрощает
> конфиг, избавляет от копипасты.

если будут включены set на уровне http - их активно начнут использовать
"...as macros for making parts of configuration work as templates".

--
Best regards,
Gena

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

set на уровне http

Михаил Монашёв August 10, 2013 03:34AM

Re: set на уровне http

Валентин Бартенев August 10, 2013 05:02AM

Re[2]: set на уровне http

Михаил Монашёв August 10, 2013 03:44PM

Re: set на уровне http

Maxim Dounin August 16, 2013 10:56PM

Re[2]: set на уровне http

Михаил Монашёв August 18, 2013 04:50PM

Re: set на уровне http

Gena Makhomed August 19, 2013 06:16AM

Re[2]: set на уровне http

Михаил Монашёв August 19, 2013 10:56AM

Re: set на уровне http

Gena Makhomed August 19, 2013 03:24PM

Re[2]: set на уровне http

Михаил Монашёв August 19, 2013 11:44PM

Re: set на уровне http

Gena Makhomed August 23, 2013 05:04AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 198
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready