Re: Реврайт на основе geo

Dmitriy Belousov mysenderbox at gmail.com
Fri Nov 20 16:46:58 MSK 2009


Большое спасибо. Так просто, а сам что-то не додумался, какой только ереси
не пробовал написать в регулярке.

20 ноября 2009 г. 14:57 пользователь Igor Sysoev <is at rambler-co.ru> написал:

> On Fri, Nov 20, 2009 at 01:38:39PM +0300, Dmitriy Belousov wrote:
>
> > Мена подсетей, локейшенов и доменов вымышленные, любые совпадения
> случайны
> > :))
> >
> > Не могу придумать, как сделать более гибко. Имею вот такую штуку:
> >
> > ...
> >     geo $net
> >     {
> >          default                      0;
> >          99.99.99.99/21          1;
> >     }
> >
> > ...
> > ...
> >
> > server
> > {
> >     server_name             myserver.ru;
> >
> >     listen                  100.100.100.100:80;
> >
> >     if ($net)
> >     {
> >            rewrite ^(.*)$ http://net.myserver.ru$1;
> >     }
> >
> >     location / {
> >             proxy_pass         http://127.0.0.1:8210/;
> >             proxy_set_header   Host              $host;
> >             proxy_set_header   X-Real-IP        $remote_addr;
> >
> >     }
> >
> >     location /location1/ {
> >             alias /path/to/location1/;
> >             access_log   off;
> >             expires      30d;
> >     }
> >
> >     location /location2/ {
> >             alias /path/to/location2/;
> >             access_log   off;
> >             expires      30d;
> >     }
> > ...
> > ...
> >     location /forum/ {
> >             access_log   on;
> >             proxy_set_header    X-Real-IP            $remote_addr;
> >             proxy_set_header    X-Forwarded-For
>  $proxy_add_x_forwarded_for;
> >             proxy_pass      http://192.168.199.199:8220/;
> >     }
> >
> > ...
> > ...
> > }
> >
> > Как видно из конфига все, кто приходят из подсети $net реврайтятся на
> другой
> > сайт на поддомене. Тот другой сайт - клон того, с которого делается
> реврайт,
> > изменения там на уровне конфига движка самого сайта, т.е. имеет точно
> такой
> > же конфиг веб-серверов (ну кроме реврайта конечно). Все было чудесно,
> пока
> > не появился последний локейшн - /forum/, который вообще на другом сервере
> > живет. Теперь стоит задача - реврайтить на основном сайте на поддомен для
> > $net абсолютно все, кроме /forum/. Как это более гибко описать, чем
> строчить
> > реврайты во всех локейшенах?
>
> -            rewrite ^(.*)$             http://net.myserver.ru$1;
> +            rewrite ^(/(?!forum/).*)$  http://net.myserver.ru
> $request_uri?;
>
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20091120/6ac28da8/attachment.html>


More information about the nginx-ru mailing list