如何在Kubernetes Ingress Controller中配置API映射及路径转发
将指定Nginx配置转换为Kubernetes Ingress规则
原Nginx配置的核心逻辑是:将所有发往/check_result路径(及子路径)的请求,完整转发到后端服务的/check_result路径(及对应子路径)。你当前的Ingress配置因为添加了nginx.ingress.kubernetes.io/rewrite-target: /注解,会把请求路径重写为根路径/,不符合需求,下面提供两种正确的配置方案:
方案一:直接转发原路径(推荐)
去掉路径重写注解,Ingress默认会将请求的完整路径转发给后端服务,完全匹配原Nginx的行为:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: check_result-ingress-service spec: rules: - http: paths: - path: /check_result pathType: Prefix backend: service: name: check_result-ip-service port: number: 7764
- 当请求
/check_result时,会转发到check_result-ip-service:7764/check_result - 当请求
/check_result/xxx时,会转发到check_result-ip-service:7764/check_result/xxx
方案二:使用正则捕获实现路径转发
如果需要保留路径重写逻辑(比如有其他复杂规则),可以通过正则捕获路径片段,确保转发路径正确:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: check_result-ingress-service annotations: nginx.ingress.kubernetes.io/rewrite-target: /check_result$1 spec: rules: - http: paths: - path: /check_result(/|$)(.*) pathType: ImplementationSpecific backend: service: name: check_result-ip-service port: number: 7764
- 正则
/check_result(/|$)(.*)会捕获/check_result之后的所有内容 rewrite-target: /check_result$1将捕获到的内容拼接到后端路径后,实现完整路径转发
内容的提问来源于stack exchange,提问作者user2264738
相关产品推荐
相关产品推荐

