nginx有着非常强大的rewrite功能, 结合正则表达式可以定义非常灵活的泛二级域名.
假设/home/www中分别有company1/和company2/两个网站, 希望分别有各自的二级域名.
在nginx配置文件中使用如下语句即可分离出二级域名, 保存至变量$subdomain, 默认为company1.
set $subdomain company1; if ( $http_host ~* "^(.*).archangelsdy.com$") { set $subdomain $1; }
之后用root语句定位至对应的主目录.
root /home/www/$subdomain;
同样, fastcgi的转发也相应修改为:
fastcgi_param SCRIPT_FILENAME /home/www/$subdomain$fastcgi_script_name;
如上配置后, 对于某个二级域名便可重定向置/home中对应的目录. 显然, 用这种方便配置后, 以后添加二级域名只需要配置好域名解析并在/home中建立相应目录即可, 不需要修改nginx的配置文件也不需要重启nginx, 可批量添加二级域名三级域名等, 缺点是对于每个二级域名下的网站配置都是相同的.