Nginx批量配置多域名绑定
最近想在 Nginx 下配置绑定了同一个 IP ,同一个端口的多个域名解析到不同的文件夹,二级域名解析到子目录下,但是网上搜索了好多,但是没有成功过的,所以自己就根据语法自己写,现在分享一下我的配置文件
先给出我的全部配置吧,然后再一一解释
| server { listen 80; server_name localhost; set $mdomain 'ip'; if ( $host ~* (\w+\.[a-zA-Z]+)$ ) { set $mdomain $1; } if ( $host ~* (\b(?!www\b)\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(?!www\b)\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;
浙公网安备 33010602011771号