Re: проблема с add_header и if

Павел Хоружий pkhoruzhiy at gmail.com
Fri Oct 16 18:40:47 MSD 2009


понятно, спасибо

16 октября 2009 г. 18:22 пользователь Maxim Dounin <mdounin at mdounin.ru> написал:
> 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 способ прострелить себе ногу".
>
>


More information about the nginx-ru mailing list