map vs if

Alex Domoradov alex.hha на gmail.com
Вт Янв 26 17:08:42 UTC 2016


А мне вот знакомый предложил такой вариант

http {
   map $http_x_debug $debug {
      default 0;
      1 1;
}

   map $debug $show_debug_header {
      default "";
      0 "";
      1 $location;
   }
}

server {
   location / {
      set $location L1;
      add_header X-DEBUG $show_debug_header always;
   }

   location =/test.html {
      set $location L2;
      add_header X-DEBUG $show_debug_header always;
   }
...
   location ~/locationX {
      set $location LX;
      add_header X-DEBUG $show_debug_header always;
   }
}

Вроде работает так, как я и хотел

# curl -s -H "X-DEBUG: 1" -I http://127.0.0.1:9898/ | grep X-DEBUG
X-DEBUG: L1

# curl -s -I http://127.0.0.1:9898/ | grep X-DEBUG

# curl -s -H "X-DEBUG: 1" -I http://127.0.0.1:9898/test.html | grep X-DEBUG
X-DEBUG: L2

# curl -s -I http://127.0.0.1:9898/test.html | grep X-DEBUG

# curl -s -H "X-DEBUG: 1" -I http://127.0.0.1:9898/non_exist.html | grep
X-DEBUG
X-DEBUG: L1

2016-01-26 18:39 GMT+02:00 Alex Domoradov <alex.hha на gmail.com>:

> Понятно, думал может можно обойтись одним мэпом.
>
> 2016-01-26 18:35 GMT+02:00 Валентин Бартенев <vbart на nginx.com>:
>
>> On Tuesday 26 January 2016 17:59:00 Alex Domoradov wrote:
>> > Немного не то, тогда у меня во всех локейшенах будет одно и тоже
>> значение
>> > X-DEBUG, а мне надо как бы "пометить" каждый локейшен своей меткой. Как
>> я
>> > это делал через if. Или я не правильно вас понял?
>> >
>> > Но выводить метки только при условии что установлен хедер X-DEBUG. Само
>> > содержимое этого хедера не имеет значение.
>> >
>> [..]
>>
>> Тогда понадобиться столько map-ов, сколько у вас location-ов.
>>
>> Либо проявить фантазию:
>>
>>   map $http_x_debug $xdbg {
>>       default  $dbg_location;
>>       ""       "";
>>   }
>>
>>
>>   add_header X-DEBUG $xdbg;
>>
>>   location /one {
>>       set $dbg_location L1;
>>   }
>>
>>   location /two {
>>       set $dbg_location L2;
>>   }
>>
>>   location /three {
>>       set $dbg_location L3;
>>   }
>>
>>
>> --
>> Валентин Бартенев
>>
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru на nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20160126/a74aba95/attachment.html>


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