Re: Балансировка между HTTP и FastCGI бэкендами

Konstantin Baryshnikov konstantin at symbi.org
Fri May 1 21:04:53 UTC 2015


On Apr 30, 2015, at 4:49 PM, Maxim Dounin <mdounin at mdounin.ru> wrote:
> On Thu, Apr 30, 2015 at 06:06:05AM +0300, Konstantin Baryshnikov wrote:
>> On Apr 29, 2015, at 3:21 PM, Maxim Dounin <mdounin at mdounin.ru> wrote:
>> 
>>>       location / {
>>>           if ($new) {
>>>               proxy_pass http://new.example.com;
>>>           }
>>> 
>>>           fastcgi_pass old.example.com;
>>>       }
>>>   }
>> 
>> Ого, а это теперь работает?
>> 
>> Всегда считал это гарантированным способом отстрелить себе ногу. Что-то изменилось?
> 
> Вот конкретно приведённая конструкция - работает, и без каких-либо 
> проблем.  И, собственно, всегда работала.  Но если конфиг будет 
> чуть сложнее - то нога в опасности, да.  Подробнее про опасности 
> расписано вот тут:
> 
> http://wiki.nginx.org/IfIsEvil

Ага, все как было, ясненько, спасибо.  Вообще у нас введено правило “if используем только с директивами rewrite-модуля”, так оно и надежнее, и сумасшедшие запутанные конфигурации нагородить не позволяет.

P. S. Лет 5 назад у меня была идея для решения проблемы IfIsEvil попробовать перенести if-ы на уровень location-ов (включая вложенные), вида

location /foo/ when ($new) {
...
}

но почитал исходники и понял, что это не очень просто :-)


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