On Wed, 21 Jun 2006, Igor Sysoev wrote:
IS> > расскажите мне, как правильно строить виртуальных хостинг. в частности,
IS> > как
IS> > разумно использовать map - а то из информации на
IS> > http://sysoev.ru/nginx/docs/http/ngx_http_map_module.html и разглядывания
IS> > исходников я как-то не очень много выцепил.
IS> >
IS> > Например, хочется малой кровью сделать что-то типа
IS> >
IS> > map $http_host $root {
IS> > hostnames;
IS> >
IS> > .domain1.tld /www/domain1;
IS> > .domain2.tld /www/domain2;
IS>
IS> .domain1.tld www/domain1;
IS> .domain2.tld www/domain2;
IS>
IS> default www/default;
IS>
IS> > ...
IS> > }
IS> >
IS> > server {
IS> > server_name $http_host;
IS> > location ~* \.(ico|jpg|jpeg|gif|png|mp3|avi|mpg|mpeg|txt|html?)$ {
IS> > root $root/html;
IS>
IS> root /$root/html;
IS>
IS> > }
IS> > location / {
IS> > proxy_pass http://127.0.0.1:80;
IS>
IS> proxy_set_header Host $host;
IS>
IS> > }
IS> > }
IS> >
Хм. Что-то не работает. Пара виртуальных серверов, описанная мимо мапа,
работает, а выроджденная ситуация типа
server {
include listen.conf;
server_name $http_host;
Вот это вот
server_name $http_host;
я не заметил. Так нельзя.
location = / {
root /www/$sroot/html;
index index.html index.shtml index.htm index.php;
}
location / {
proxy_pass http://127.0.0.1;
}
}
фигу - в качестве $document_root пишет root от первого из описанных серверов.
Где я не вижу очевидного?
Вырожденный сервер нужно поместить в начало. Или во всех listen
для него указать default.
Игорь Сысоев
http://sysoev.ru