ПРОЕКТЫ 


  АРХИВ 


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: проблема с add_hea der и if



Hello!

On Fri, Oct 16, 2009 at 05:50:44PM +0400, Павел Хоружий wrote:

> Добрый день.
> 
> Встретился со странной проблемой.
> Есть кусок конфига:
> 
> set $var "";
> if ($arg_param != ""){
> set $var "asd";
> add_header Set-Cookie "coo1=1; path=/";
> add_header Set-Cookie "coo2=1; path=/";
> }
> 
> if ($host ~* "test"){
> set $var "$var 123";
> 
> add_header Set-Cookie "coo3=1; path=/";
> add_header Set-Cookie "coo4=1; path=/";
> }
> 
> add_header test_header "$var";
> 
> \\nginx 0.7.62
> 
> 1. Если условия выполняются для обоих if, то заголовки из первого if в
> ответе клиенту не присутствуют, а заголовоки из второго есть.
> Если убрать из второго if заголовки, то для первого они все равно не
> появляются. Заголовок test_header отсутствует.
> 2. Если условие выполняется для одного из if, то присутствуют
> заголовки отработавшего сравнения, а заголовок test_header отсутвует.
> 3. Если убрать из второго if заговки, то в ответе присутствует только
> заголовок test_header.
>
> Что можете посоветовать?

Это ещё один known issue.  If is evil.  Не используйте в if() 
ничего кроме return или rewrite ... last;.

Maxim Dounin

p.s. Надо было всё-таки сделать доклад про if() на highload.  
Как-то так: "if() в конфигах nginx - 1001 способ прострелить себе ногу".



 




Copyright © Lexa Software, 1996-2009.