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 способ прострелить себе ногу".
|