ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: после rewrite опят ь перечитываем locations?



Hello!

On Thu, Apr 09, 2009 at 11:58:20AM +0300, Goncharov Yuri wrote:

> Здравствуйте, подскажите пожалуйста, как реализовать нижеописанное.
> apache-mod_php + nginx
>
> Есть старый сайт http://domain.com/old/
> Есть новый сайт http://domain.com/
>
> Для каждого из версий свой бекенд.
> Но перед тем как проксировать на бекенд нужно убирать /old/
>
> Получается если делать
>
> location ~* /
> {
> proxy_pass http://backend1
> }
>
> location ~* /old/
> {
> rewrite ^/old/(.*) /$1 last

В общем случае:

- rewrite ^/old/(.*) /$1 last
+ rewrite ^/old/(.*) /$1 break;

В данном конкретном вам нужно вместо всего этого написать:

    location / {
        proxy_pass http://backend1;
    }
    location /old/ {
        proxy_pass http://backend2/;
    }

Не надо использовать regex location'ы там, где они не нужны.  В 
частности, от этого появляется возможность использовать proxy_pass 
c uri, что существенно упрощает подобные задачи.

> proxy_pass http://backend2
> }
>
> То после того как отработает rewrite - обработка идёт опять по 1-му location
>
> Как быть?

Maxim Dounin



 




Copyright © Lexa Software, 1996-2009.