ПРОЕКТЫ 


  АРХИВ 


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: Реврайт на основе geo


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Реврайт на основе geo
  • From: Dmitriy Belousov <mysenderbox@xxxxxxxxx>
  • Date: Fri, 20 Nov 2009 16:46:58 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=+ey+MKERHLnrPJ8Mckq7bqbhjDTPOwQVjdzfbr8aoIc=; b=Xrtald/A4EhKKqchiCn9B+oWGtbllW1pQmjyHSG6DURoMtTUfZc0qhJV8HE6Vl535d wXOZpfU1VUeonD4B/GbjMXoxPpR1lhgSKC+BdxMXmZurn5TlRfV8ksdI7QHE8cnq7W9u OGRrXV0I4OZ+APZpUoWUqRT42+0bZ5ozJV/bU=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=uB8UZdIu5X0Q1Q+3WIQTrS0UruNTWHaC9DKPm3OW9FecjLaUgStX6306GlsTiC4JTY U4TcXWFiU1eLuC8meuaCJuXAVAM3dfopM4HVKSDpGGJlOqDRcdm+kG3OkZ6HATrObX/a tcNGrWYiL5jT439ueQ0L9wnJDaQAFJjqdjPq4=
  • In-reply-to: <20091120115750.GD82093@xxxxxxxxxxxxx>
  • References: <c09d68bb0911200238v6fcbb78au283ac295e8423c4a@xxxxxxxxxxxxxx> <20091120115750.GD82093@xxxxxxxxxxxxx>

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

20 ноября 2009 г. 14:57 пользователь Igor Sysoev <is@xxxxxxxxxxxxx> написал:
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




 




Copyright © Lexa Software, 1996-2009.