Py学习  »  NGINX

Kubernetes入口nginx不匹配子路径

Alex M • 4 年前 • 751 次点击  

我正在尝试在谷歌云上做一个简单的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分。 我试过使用regex,但根本没用

后端只是回音服务器,它们总是在任何路径上回复。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37986
 
751 次点击  
文章 [ 2 ]  |  最新文章 4 年前
mbuechmann
Reply   •   1 楼
mbuechmann    5 年前

此定义与路径的确切字符串匹配。如果要包括子目录,可以使用通配符 * . 修改后的定义应如下所示:

- path: /one/*
  backend:
    serviceName: test-one-backend
    servicePort: 80

我不确定是否 http://server/one (结尾没有斜线)仍然有效。在这种情况下,你必须保留原来的定义,并添加另一个像上面那样的定义。

Rico
Reply   •   2 楼
Rico    5 年前

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

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中阻塞