问题描述
我希望进行以下比赛:
例如*-server.*.*
-dev-server.anydomain.anytld
在同一文件中,另一个服务器:
例如*-cloud.*.*
-dev-cloud.anydomain.anytld
后备-在同一个文件中-如果以上条件均不匹配:
例如*.*.*
-dev.anydomain.anytld
或somethingelse.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。