我已经在EKS中部署了一个AWS ALB入口控制器,并且k8s创建了一个AWS ALB并创建了一些规则来转发流量:
如文档所述:
https://docs.aws.amazon.com//elasticloadbalancing/latest/application/load-balancer-listeners.html
路径条件
您可以使用路径条件来定义基于请求中的URL路由请求的规则(也称为基于路径的路由)。 路径模式仅应用于URL的路径,而不应用于其查询参数。 路径模式区分大小写,最大长度为128个字符,并且可以包含以下任何字符。
AZ,az,0-9
_-。 $ /〜“'@:+
&(使用&)
*。 (匹配0个或更多字符)
? (正好匹配1个字符)
我有两个规则:
1. IF Path is /api/* THEN Forward to XXX
2. IF Path is /* THEN Forward to YYY
我的网络应用程序中的URL 是:
1. example.com/api/users/1 Forward to XXX [200 - OK]
2. example.com/signin Forward to YYY [200 - OK]
3. example.com/login-user returns 404 (the hyphen is recognized as a pattern)
预期:将请求3转发到YYY的规则
我尝试过:
IF Path is /* THEN Forward to YYY
没有运气,在文档中什么也没说,所以我如何转义连字符以将请求3转发给YYY?
PD :我大约有50个带连字符的字符,我不想重写它们。
答案 0 :(得分:0)
有点骇人听闻,但请尝试按/login?user/*
进行操作。
问号应与连字符匹配。当然,它可以匹配任何字符,但这确实不会影响您的URL分辨率,除非您的URL路径中存在一些奇怪的冲突,例如/ loginfuser或其他内容。