Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vhost的Nginx regex变量为null_Regex_Nginx_Vhosts - Fatal编程技术网

vhost的Nginx regex变量为null

vhost的Nginx regex变量为null,regex,nginx,vhosts,Regex,Nginx,Vhosts,我有一个如下所示的配置文件: server { listen 80; server_name ~^(?<folder>[^.]+).(?<user>[^.]+).example.com; charset utf-8; index index.php index.html index.htm; root /var/www/projects/dev/$user/$folder/htdocs; ... } 服务器{ 听80; 服务器名

我有一个如下所示的配置文件:

server {
    listen 80;

    server_name ~^(?<folder>[^.]+).(?<user>[^.]+).example.com;
    charset utf-8;
    index index.php index.html index.htm;
    root /var/www/projects/dev/$user/$folder/htdocs;
...
}
服务器{
听80;
服务器名称~^(?[^.]+)(?[^.]+).example.com;
字符集utf-8;
index.php index.html index.htm;
root/var/www/projects/dev/$user/$folder/htdocs;
...
}
因此,我可以使用类似test.user.example.com的url访问该网站

在一台服务器中,配置文件按预期工作,但在另一台服务器中,变量无效


有什么想法吗?

解决方案是从

server_name ~^(?<folder>[^.]+)\.(?<user>[^.]+).example.com;
server\u name~^(?[^.]+)\(?[^.]+).example.com;

server_name~^(?[^.]*)(?[^.]*)example.com;

仅供参考:若要匹配点,您需要在字符类之外转义它们,
^(?[^.]+)\(?[^.]+)\。example\.com
您的一个服务器块将是默认服务器,即使主机名与正则表达式不匹配,也会处理请求,这意味着变量将无效。更多信息,请参阅。
server_name ~^(?<folder>[^.]*).(?<user>[^.]*).example.com;