diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/util/ProxyUtil.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/util/ProxyUtil.java index b163dca2..14b777cf 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/util/ProxyUtil.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/util/ProxyUtil.java @@ -401,11 +401,12 @@ public class ProxyUtil { * 通过完整域名获取域名id */ public static Integer getDomainNameIdByFullDomain(String fullDomain) { - List domains = domainToDomainNameIdMap.keySet().stream().filter(item -> fullDomain.endsWith(item)).collect(Collectors.toList()); - // 不存在 或者 有多条记录,返回null - if (CollectionUtil.isEmpty(domains) || domains.size() > 1) { + List domains = domainToDomainNameIdMap.keySet().stream().sorted((a,b) -> b.length() - a.length()).filter(item -> fullDomain.endsWith(item)).collect(Collectors.toList()); + // 不存在,返回null + if (CollectionUtil.isEmpty(domains)) { return null; } + // 优先匹配最长的域名,默认取第一个,后续思考如何优化 return getDomainNameIdByDomain(domains.get(0)); }