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