社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

Kubernetes入口nginx不匹配子路径

Alex M • 6 年前 • 1004 次点击  

我正在尝试在谷歌云上做一个简单的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
 
1004 次点击  
文章 [ 2 ]  |  最新文章 6 年前
mbuechmann
Reply   •   1 楼
mbuechmann    6 年前

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

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

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

Rico
Reply   •   2 楼
Rico    6 年前

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

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