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