先说说要实现的效果:比如访问a.ninvfeng.com,对应的网站根目录为/data/www/a;访问b.ninvfeng.com则对应的网站跟目录为/data/www/b.....传统的做法可以解析N个域名然后配置N个虚拟主机,其实使用泛解析可以快捷方便一劳永逸地实现这个需求。
操作步骤
1.域名泛解析,将*.ninvfeng.com解析到服务器,这样ninvfeng.com下的所有子域名都会指向服务器
2.nginx泛解析,在nginx配置文件中添加如下内容,其中~^(?<subdomain>.+)
是获取二级域名作为变量,$subdomain是使用二级域名作为网站根目录,这样就能使访问域名和网站根目录对应起来了
server {
listen 80;
server_name ~^(?<subdomain>.+).ninvfeng.com$;
root /data/www/$subdomain/;
location ~ /.well-known {
allow all;
}
location / {
index index.html index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
if (!-e $request_filename) {
rewrite ^/(.*) /index.php?$1 last;
}
}
重启nginx,验证是否生效
大功告成