Nginx支持带有回退的特定通配符server_name(regex)



我希望进行以下匹配:
*-server.*.*例如-dev-server.anydomain.anytld

在同一个文件中,另一个服务器:
*-cloud.*.*,例如-dev-cloud.anydomain.anytld

回退-在同一文件中-如果上面的非不匹配
*.*.*,例如-dev.anydomain.anytldsomethingelse.anydomain.anytld

这就是我现在拥有的不起作用的东西:

server {
listen       80;
server_name  ~(server)*$;
}
server {
listen       80;
server_name  ~(cloud)*$;
}
server {
listen       80;
server_name  *.*.*$;
}

你可以用这个工具来处理它https://nginx.viraptor.info/

感谢

您的正则表达式无效。

要匹配*-server.*.*,请使用:

server_name ~-server.[^.]+.[^.]+$;

要匹配*-cloud.*.*,请使用:

server_name ~-cloud.[^.]+.[^.]+$;

您不需要server_name语句来匹配任何其他语句,只需使用:

listen 80 default_server;

此外,Nginx具有通配符语法和用于server_name指令的正则表达式语法。他们有不同的评估规则。上面的示例使用正则表达式,这些表达式按顺序求值,直到找到匹配的表达式为止。有关详细信息,请参阅本文档。

最新更新