使Traefik将HTTP BAN请求路由到与常规HTTP请求不同的服务或端口



我们使用Traefik 1.7作为GKE Kubernetes集群上的Ingress控制器。每个应用程序都有一个Ingress,它将传入的HTTP请求路由到Varnish服务,后者要么从缓存中提供响应,要么将请求路由到一些nginx/PHP后端应用程序。

Varnish pod由一个Varnish容器和一个应用程序组成,前者在端口80上侦听传入请求,后者在端口6083上负责将BAN请求镜像到所有Varnish副本,以便从所有Varnissh副本中清除缓存对象。大多数BAN请求将来自内部PHP应用程序,但我们也有来自该集群外部运行的GitLab CI任务的BAN请求。

我们希望将具有BAN谓词(而不是GET、POST等(的传入HTTP请求路由到Varnish服务上的端口6083,同时让GET、HEAD、POST流量像正常情况一样到达端口80。

我想不出一种方法可以让Traefik基于HTTP谓词路由到不同的服务或端口。有什么想法吗?

您可以在路由表达式中使用Method()规则。看见https://docs.traefik.io/routing/routers/#rule有关更多详细信息,但从Traefik和Mux中的代码的快速检查中,我看不出Method("BAN")不工作的原因。

最新更新