RegEx VHost name and the default VHost
automatix
nginx-forum at nginx.us
Wed Jan 23 18:37:08 UTC 2013
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;
set $folder "$area/$project";
set $domain "$project.$area.loc";
}
-- root /var/www/$folder/;
-- 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?
Posted at Nginx Forum: http://forum.nginx.org/read.php?2,235490,235490#msg-235490
More information about the nginx
mailing list