Nginx之使用正则方式配置server_name

需求

朋友有一个网站,其下将会挂有N个用户站点,每个用户都有各自的ID,为4位数字。希望我可以帮忙配下nginx,为每个用户配一个二级域名的战点。

在直白点,意思就是:要配置虚拟主机,其server_name类似1000,10001,1002这样的二级域名。

如果为每个用户单独配置,如果有9x9x9x9个用户,那得写多少个!所以本着懒即是美德的原则,只配置一个虚拟主机,但可以匹配所有用户的,就相当美好了。这里有个条件就是用户的ID都是4位数字,所以可以使用正则匹配一下。

具体配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 80;
server_name "~^(\d{4})\.localhost\.com$"; #
root /path/to/website;
index index.html index.htm 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;
}
}