после rewrite опять перечитываем locations?
Maxim Dounin
mdounin at mdounin.ru
Thu Apr 9 13:31:54 MSD 2009
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
More information about the nginx-ru
mailing list