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;