proxy_pass в if

Igor Sysoev is at rambler-co.ru
Sat Jul 21 22:46:22 MSD 2007


On Sat, Jul 21, 2007 at 10:31:08PM +0400, Andrey G. Sergeev (AKA Andris) wrote:

> В секции server имеется такой кусок:
> 
> location        / {
>         if ( $server_port = 8010 ) {
>                 proxy_pass      http://backend1/;
>         }
>         if ( $server_port = 8020 ) {
>                 proxy_pass      http://backend2/;
>         }
> }
> 
> Всего таких проверок 5. При проверке конфига nginx не принимает его, т.к.
> 2007/07/21 22:25:50 [emerg] 1029#0: "proxy_pass" may not have URI part 
> in location given by regular expression, or inside the "if" statement, 
> or inside the "limit_except" block in /usr/local/etc/nginx/nginx.conf:73
>
> При этом на 
> http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_pass 
> сказано, что контекстом для proxy_pass может быть как раз "if в location".
> 
> В чём я неправ?

"proxy_pass" may not have URI part:

-                proxy_pass      http://backend1;
+                proxy_pass      http://backend1/;


А вообще, такие вещи нужно разруливать server'ами, а не if'ами:

server {
     listen  8010;
     location / {
         proxy_pass  http://backend1;
     }
}

server {
     listen  8020;
     location / {
         proxy_pass  http://backend2;
     }
}


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





More information about the nginx-ru mailing list