RegEx VHost name and the default VHost

Valentin V. Bartenev vbart at nginx.com
Wed Jan 23 19:17:01 UTC 2013


On Wednesday 23 January 2013 22:37:08 automatix wrote:
> Hello!
> 
> VHost names with RegEx is an absolutely imazing feature of nginx. I
> llllllllllllllove it! :) But now I've got an issue with it.
> 
> On my VM I have a VHost templates ax-common-vhost and use it for VHsots
> like project.area.loc, so the server_name rule is:
> 
> server_name ~^(.*)\.(.*)\.loc$;
> 
> It works fine and has already saved much time for me. But the default VHost
> seems to get a trouble with my template. When a site, that uses it, is
> active, the default VHost also is trieng to use the template.
> 
> Example:
> 
> /etc/nginx/sites-available:
> > default
> 
> -- root /usr/share/nginx/html
> -- server_name localhost;
> 
> > test.sandbox.loc
> 
> -- include /etc/nginx/sites-available/ax-common-vhost;
> 
> > ax-common-vhost
> 
> -- server_name ~^(.*)\.(.*)\.loc$;
> --     if ($host ~ ^(.*)\.(.*)\.loc$) {
>         set $project $1;
>         set $area $2;

This is ugly equivalent to: server_name ~^(?<project>.+)\.(?<area>.+)\.loc$;

> 
>         set $folder "$area/$project";
>         set $domain "$project.$area.loc";

And the $domain variable is effectively equal to $host. What's the point?

>     }
> -- root /var/www/$folder/;

   root /var/www/$area/$project;


> -- test.sandbox.loc (based on the ax-common-vhost)
> 
> /etc/nginx/sites-enabled:
> > default
> > test.sandbox.loc
> 
> By access to the server default VHost (over IP of the VM) an error occures:
> 
> 2013/01/23 18:41:19 [error] 4051#0: *1 directory index of "/var/www//" is
> forbidden, client: 192.168.56.1, server: ~^(.*)\.(.*)\.loc$, request: "GET
> / HTTP/1.1", host: "192.168.56.101"
> 
> When I change the server root rule in the template e.g. to /var/www/ and
> place a test file (index.html) into my webroot folder, it is displayed.
> 
> That means: Nginx uses my template for the default host. But
> "192.168.56.101" cannot be mached to "^(.*)\.(.*)\.loc$"! Is it a bug?
> 

Are you sure that your "default" is actually the default server configuration 
for the listening address:port?

  wbr, Valentin V. Bartenev

--
http://nginx.com/support.html
http://nginx.org/en/donation.html



More information about the nginx mailing list