Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: проблема с add_header и if
- To: nginx-ru@xxxxxxxxx
- Subject: Re: проблема с add_header и if
- From: "Alex, the Marrch Ca'at" <marrch.caat@xxxxxxxxx>
- Date: Sun, 18 Oct 2009 02:20:39 +0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=iHgsUcHoRPDXYn9pjRyOOu59bQQNGF5UL4OEy6LqGNs=; b=U1eMLTO7gZqTNenp9M0am6kd3cqkp8JduLMH8Cat9oZrYuYMfBQsUyVQoKcFNZrZWb qO1mIuCfJ0sQFB7ujylq/NL3ujYepSocR2myrZM9Ibx2WeORJmC9imFXSxIPXJjyncTW 02uDEJXRApqqyIrvrv4+sjvhFvuxfkBZPDZyo=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=EWqCRnHp93OZe3kOTqqb9avjFBNMEf689nLu4v+ZMRi5HVXYeK1y3zU4RyezrUmyef HUjYx0CmdAq2EQclYI5Ve3Pu7TWh8F+VRk0K6/QykGelw1U0BKZmwzQYfgcO2yn7zZDe ize64s5v9nIiqt0C1PwHKIiQrEbE/Yh0U/D+M=
- In-reply-to: <20091016142227.GS33271@xxxxxxxxxx>
- References: <7044da940910160650o2e15e68av6a9639c22072fc22@xxxxxxxxxxxxxx> <20091016142227.GS33271@xxxxxxxxxx>
Странная складывается ситуация. Судя по всему, Игорь полагает, что так
и надо и нефиг if иначе использовать, и исправлять ситуацию с if-ами
не намерен. Но если все НАСТОЛЬКО плохо и вообще это не бага, а фича,
- то проще было бы вместо якобы универсальной директивы "if () {...}",
порождающей кучу лишних проблем и вопросов и просто не
предназначенной, чтобы работать - ввести две нормальных директивы
"rewriteif() ... ;" и "returnif() ... ;", которые не будут и пытаться
делать того, для чего не предназначены, и никаких проблем с ними не
будет.
Но нет, оказывается проще оставить все как есть и постоянно всем
объяснять, что заявленной в документации функцией пользоваться не
следует...
В недоумении, Алекс Марртовский.
2009/10/16 Maxim Dounin <mdounin@xxxxxxxxxx>:
> 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 способ прострелить себе ногу".
>
>
|