ПРОЕКТЫ 


  АРХИВ 


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]

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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Реврайт на основе geo
  • From: Dmitriy Belousov <mysenderbox@xxxxxxxxx>
  • Date: Fri, 20 Nov 2009 13:38:39 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=uPHUwOLwTIOSYnJH67hG0CdNZ3bFDgxZED0BLGEKqMM=; b=C5AVc34oBj9BRM1g5iu6RQES0wPMDdyahaAdIDOXQ9F+QHUi47cZeK1xdSRpXC6qlr xkQygZ2PuR7cMYhFvg/HI0NSIG0AuIPOHF4SrJAiMQN8YU2XjbnD9yT7HSYdWKQyyKNo B7/p6s9t6kMWXwS0KwfTncuaZrMFg6lhTMDFc=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=R9D4e8pBLJXc1PRDmmMKbPSqonaaIbQvWpXAQD9ldTjFai7uavdSXYU7JJIB7KNAJh ejFZmtx6texW69vtn675+FQQdSGf3c/AzncxdEsQ8+tJTEeU1JxYVnzqEuiOXOaNbMxK hq5sO2y2NgcF9YREnLZfRha2kCp71hvSqqUa0=

Мена подсетей, локейшенов и доменов вымышленные, любые совпадения случайны :))

Не могу придумать, как сделать более гибко. Имею вот такую штуку:

...
    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/. Как это более гибко описать, чем строчить реврайты во всех локейшенах?


 




Copyright © Lexa Software, 1996-2009.