如何在GCP外部负载均衡器的Ingress中去除/api前缀实现路径重写?
GCP GCE Ingress 路径前缀去除配置方案
要实现将/api前缀的请求重写为后端服务的无前缀路径(比如/api/book转成/book),在GCP的GCE类型Ingress中,需要借助FrontendConfig资源来配置路径重写规则,具体操作如下:
1. 创建FrontendConfig资源
创建一个用于定义路径重写规则的FrontendConfig,规则会捕获/api/后的所有内容,并将请求路径重写为捕获到的部分:
apiVersion: networking.gke.io/v1beta1 kind: FrontendConfig metadata: name: api-rewrite-config spec: redirectToHttps: enabled: true # 可选,若已配置证书可保留 urlRewrite: pathPrefixRewrite: "/" pathRedirectRewrite: true
2. 修改原Ingress配置
更新你的Ingress资源,关联上面创建的FrontendConfig,并调整路径匹配规则为/api/*,同时指定路径类型为ImplementationSpecific(适配GCE Ingress的通配符匹配逻辑):
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: basic-ingress annotations: kubernetes.io/ingress.global-static-ip-name: some-ip networking.gke.io/managed-certificates: some-cert kubernetes.io/ingress.class: "gce" # 关联FrontendConfig networking.gke.io/v1beta1.FrontendConfig: api-rewrite-config spec: defaultBackend: service: name: some-web-app port: number: 80 rules: - http: paths: - path: /api/* pathType: ImplementationSpecific backend: service: name: some-api port: number: 80
配置说明
pathPrefixRewrite: "/"表示将匹配到的/api前缀替换为根路径,结合pathRedirectRewrite: true,会自动把/api/book这类请求的路径重写为/book后转发给后端服务。- 路径设置为
/api/*是为了匹配所有以/api开头的子路径,ImplementationSpecific是GCE Ingress支持通配符匹配所需的路径类型。
内容的提问来源于stack exchange,提问作者Chiawen
相关产品推荐
相关产品推荐

