Skip to main content
 首页 » 编程设计

Kubernetes入口nginx不匹配子路径

2025年01月19日19fff_TT

我正在尝试在谷歌云上制作一个简单的 ingress-nginx 示例,但它与子路径不匹配:

apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
  name: test-ingress 
  annotations: 
    nginx.ingress.kubernetes.io/rewrite-target: / 
spec: 
  rules: 
    - http: 
        paths: 
        - path: /one 
          backend: 
            serviceName: test-one-backend 
            servicePort: 80 
        - path: /two 
          backend: 
            serviceName: test-two-backend 
            servicePort: 80 

当我打电话时,http://server/one工作,但是当我调用 http://server/one/path我得到一个404。 我尝试了几种方法,例如使用正则表达式,但根本不起作用

后端只是总是在任何路径上回复的回显服务器。

请您参考如下方法:

您需要在路径末尾使用 /*:

apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
  name: test-ingress 
  annotations: 
    nginx.ingress.kubernetes.io/rewrite-target: / 
spec: 
  rules: 
    - http: 
        paths: 
        - path: /one/* 
          backend: 
            serviceName: test-one-backend 
            servicePort: 80 
        - path: /two 
          backend: 
            serviceName: test-two-backend 
            servicePort: 80 

真的不是documented widely as of today , 但本质上 path 转换为 location {}在 nginx.conf 中阻止