Re[2]: вопрос по sever_name
Arkadiy Kulev
eth at ethaniel.com
Thu Jan 1 19:54:20 MSK 2009
Решил вот таким способом, дешево и сердито.
server {
listen ****:80 default backlog=10000 sndbuf=128k;
server_name ~\d.data\d+\.*$ data\d+.*;
access_log /var/log/nginx.log static;
location /albums/ {
rewrite ^/albums/([a-z]+)/[0]*([0-9]*)([0-9])-([0-9]*)-([0-9]+)-(.*)\.([a-z]*)$ /cache/$1_cache/$6/$5-$6.$7;
rewrite ^/albums/([a-z]+)/[0-9]/[0-9]/[0-9]/[0]*([0-9]*)([0-9])/(.*)/cache/[0]*([0-9]*)-(.*)\.([a-z]*)$ /cache/$1_cache/$6/$5-$6.$7;
rewrite ^/cache/([a-z]+)_cache//(.*)$ /cache/$1_cache/src/$2;
if ($uri !~* ^/cache ) {
return 403;
}
}
location /albums_allow/ {
rewrite ^/albums_allow/([a-z]+)/([0-9]?)([0-9]?).([a-z]*)$ /albums_allow/$1/0/$2$3.$4 break;
rewrite ^/albums_allow/([a-z]+)/([0-9]*)([0-9])([0-9])([0-9]).([a-z]*)$ /albums_allow/$1/$3/$2$3$4$5.$6;
}
location @fallback {
access_log /var/log/nginx.log new;
keepalive_timeout 0; # so when new images are requested, the connection is dropped to make downloads faster
proxy_set_header Srcuri $request_uri;
proxy_set_header Host $host;
proxy_set_header Weneed $uri;
proxy_pass http://backend;
break;
}
location / {
if ($http_host ~ data(\d+)\.) {
set $root /data$1;
root $root;
error_page 404 = @fallback;
}
}
}
Thursday, January 1, 2009, 7:42:26 PM, you wrote:
> 01.01.2009 17:42, Arkadiy Kulev wrote:
>> Можно ли сделать так, чтобы использовался маска в server_name, например
>> server_name data([0-9]+).*;
>> которую потом можно было бы подставлять в root
>> root /data$1;
>>
>> И таким образом все эти хосты бы умещались в одной записи?
> можно использовать например map
> http://sysoev.ru/nginx/docs/http/ngx_http_map_module.html и на
> основании server_name получать root
> или что-то вроде
> set $newroot "";
> if($host ~* "^(data[0-9]+)\..+"){
> set $newroot $1;
> }
> root /$newroot;
Arkadiy Kulev mailto:eth at ethaniel.com
+7 495 5070602
Moscow, Russia
More information about the nginx-ru
mailing list