Nginx支持具有回退功能的特定通配符server_nameregex

问题描述

我希望进行以下比赛:
例如*-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指令的正则表达式语法。他们有不同的评估规则。上面的示例使用正则表达式,对它们进行顺序评估,直到找到匹配的表达式。有关详细信息,请参见this document

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...