server_name中的正则expression式与Nginx虚拟主机

我正在尝试使用Nginx。 假设我有几个用户和一个子域,每个用户都有一个目录在/home/dev/sites/USER_ID 。 我想USER_ID.dev.example.com指向该目录。

我已经尝试制作一个虚拟主机文件,如下所示:

 server { listen 80; server_name ~^(?<site_id>)$.dev.example.com; root /home/dev/sites/$site_id; index index.php; location / { try_files $uri $uri/ /index.php?$uri&$args; } location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } 

然而,所有这一切发生的是它显示了我的PhpMyAdmin安装(显然另一个虚拟主机指向它)。 有人能告诉我我做错了什么吗? 我有一种感觉,这只是不好的正则expression式,但我不确定。

这个expression式永远不会匹配,因为$在string中间。 尝试:

 server_name ~^(?<site_id>.+)\.dev\.example\.com$;