让 Traefik 将 HTTP BAN 请求路由到与常规 HTTP 请求不同的服务或端口
Make Traefik route HTTP BAN requests to different service or port than regular HTTP requests
我们使用 Traefik 1.7 作为 GKE Kubernetes 集群上的入口控制器。每个应用程序都有一个 Ingress 将传入的 HTTP 请求路由到 Varnish 服务,该服务服务于来自缓存的响应或将请求路由到某些 nginx/PHP 后端应用程序。
Varnish pods 由一个在端口 80 上侦听传入请求的 Varnish 容器和一个在端口 6083 上负责将 BAN 请求镜像到所有 Varnish 副本以便从所有副本中清除缓存对象的应用程序组成清漆复制品。大多数 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\")
不工作的原因。
我们使用 Traefik 1.7 作为 GKE Kubernetes 集群上的入口控制器。每个应用程序都有一个 Ingress 将传入的 HTTP 请求路由到 Varnish 服务,该服务服务于来自缓存的响应或将请求路由到某些 nginx/PHP 后端应用程序。
Varnish pods 由一个在端口 80 上侦听传入请求的 Varnish 容器和一个在端口 6083 上负责将 BAN 请求镜像到所有 Varnish 副本以便从所有副本中清除缓存对象的应用程序组成清漆复制品。大多数 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\")
不工作的原因。