proxy_pass and if condition

Igor Sysoev is at rambler-co.ru
Wed Apr 5 13:57:22 MSD 2006


On Wed, 5 Apr 2006, Andrey Y. Ostanovsky wrote:

> Возникла задача: пришел клиент с IP адреса 1.1.1.1 к нам с запросом
> http://www.foo.bar - ему надо сделать proxy_pass на один бакэнд, а всем
> остальным, пришедшим к нам с тем же самым запросом - сделать proxy_pass
> на другой бакэнд.
> Попробовал через:
> if ($host ~ 1.1.1.1) {
>   proxy_pass 1;
> }
> Не работает, ругается. :( Пробовал через:
> location / {
>   allow 1.1.1.1;
>   deny all;
>   proxy_pass 1;
> }
> location / {
>   allow all;
>   proxy_pass 2;
> }
> До второго location дело, похоже, не доходит. Все клиенты получают 404.
>
> Есть ли еще какие-нибудь варианты?

Примерно так:

       location / {
           if (...) {
               rewrite  ^(.+)$ /b1/  last;
           }

           proxy_pass  http://backend2/;
       }

       location /b1/ {
           proxy_pass  http://backend1/;
       }


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list