先给出我的全部配置吧,然后再一一解释
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; } }
|
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; }
|