vhosting and map { }

Igor Sysoev is at rambler-co.ru
Wed Jun 21 14:33:43 MSD 2006


On Wed, 21 Jun 2006, Dmitry Morozovsky wrote:

> 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





More information about the nginx-ru mailing list