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

Dmitriy Belousov mysenderbox at gmail.com
Fri Nov 20 13:38:39 MSK 2009


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

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

...
    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/. Как это более гибко описать, чем строчить
реврайты во всех локейшенах?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20091120/337837a2/attachment.html>


More information about the nginx-ru mailing list