/ 中存储网

Nginx批量配置多域名绑定

2014-04-14 10:50:01 来源:itjs.cn
最近想在 Nginx 下配置绑定了同一个 IP ,同一个端口的多个域名解析到不同的文件夹,二级域名解析到子目录下,但是网上搜索了好多,但是没有成功过的,所以自己就根据语法自己写,现在分享一下我的配置文件

先给出我的全部配置吧,然后再一一解释

server {

listen       80;

server_name  localhost;

set $mdomain 'ip';

if ( $host ~* (w+.[a-zA-Z]+)$ ) {

set $mdomain $1;

}

if ( $host ~* (b(?!wwwb)w+).w+.[a-zA-Z]+$ ) {

set $mdir /$1;

}

location / {

index index.html index.php;

root D:/Web/www/$mdomain$mdir;

}

location ~ .php$ {

root           D:/Web/www/$mdomain$mdir;

fastcgi_pass   127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  D:/Web/www/$mdomain$mdir/$fastcgi_script_name;

include        fastcgi_params;

}

}

这是 server 下的,server 要放在 http 内。

1.多域名解析

我的配置文件是根据正则表达式判断域名,然后域名赋给变量,然后变量组成路径

set $mdomain 'ip';

//设置变量 mdomain 的默认值为字符串"ip"

if ( $host ~* (w+.[a-zA-Z]+)$ ) {

//对输入的域名进行正则表达式匹配;

set $mdomain $1;

//若匹配则设置变量 mdomain 为正则表达式括号的值;

}

如下图为匹配结果

正则表达式匹配结果

匹配成功就把结果存入变量 mdomain 中,待用;

2.二级域名解析到子文件夹

二级域名还是根据正则表达式匹配

if ( $host ~* (b(?!wwwb)w+).w+.[a-zA-Z]+$ ) {

set $mdir /$1;

}

这是正则表达式的匹配结果。

匹配结果

还是取子域名加上"/"到变量 mdir 中;

location 解析

location / {

index index.html index.php;

root D:/Web/www/$mdomain$mdir;

}

最后 root 到匹配的结果路径中,没有匹配的变量就为空了;例如:www.server110.com 解析的路径是 D:/Web/www/server110.com/www;server110.com 解析的路径就是 D:/Web/www/server110.com;