我们在 GKE Kubernetes 集群上使用 Traefik 1.7 作为 Ingress-controller。每个应用程序都有一个 Ingress,它将传入的 HTTP 请求路由到 Varnish 服务,该服务要么提供来自缓存的响应,要么将请求路由到一些 nginx/PHP 后端应用程序。
Varnish pod 包含一个 Varnish 容器,它在端口 80 上侦听传入请求,以及一个在端口 6083 上的应用程序,负责将 BAN 请求镜像到所有 Varnish 副本,以便从所有 Varnish 副本中清除缓存对象。大多数 BAN 请求将来自内部 PHP 应用程序,但我们也有来自在该集群外部运行的 GitLab CI 任务的 BAN 请求。
我们希望将带有 BAN 动词(与 GET、POST 等相反)的传入 HTTP 请求路由到 Varnish 服务上的端口 6083,同时让 GET、HEAD、POST 流量像往常一样到达端口 80。
我想不出一种方法让 Traefik 根据 HTTP 动词路由到不同的服务或端口。有任何想法吗?