首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes中nginx-ingress的重写规则

Kubernetes中nginx-ingress的重写规则
EN

Stack Overflow用户
提问于 2021-08-05 10:15:59
回答 2查看 537关注 0票数 0

我正在努力为Kubernetes上的nginx-ingress制定一个重写/重定向规则。

根据文档https://kubernetes.github.io/ingress-nginx/examples/rewrite/,它说可以使用注释"nginx.ingress.kubernetes.io/rewrite-target",但无法在我的入口上实现。也许我做错了。

例如,nginx-ingress yaml文件的一部分。

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    example.com/deployment-name: frontend-page
    example.com/ingress-hostnames: www.example.com
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: www.example.com
    http:
      paths:
      - backend:
          serviceName: frontend-page
          servicePort: 8080
        path: /front(/|$)(.*)

也尝试了另一种方法,但没有成功:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    example.com/deployment-name: frontend-page
    example.com/ingress-hostnames: www.example.com
    nginx.ingress.kubernetes.io/rewrite-target: /shop
spec:
  rules:
  - host: www.example.com
    http:
      paths:
      - backend:
          serviceName: frontend-page
          servicePort: 8080
        path: /

我想将所有到页面www.example.com/front/checkdomain的流量重定向到www.example.com/checkdomain。我想去掉中间的“正面”路径。

EN

回答 2

Stack Overflow用户

发布于 2021-08-05 11:56:10

尝试使用更新的API版本,希望您的入口支持networking.k8s.io/v1beta1

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - backend:
          serviceName: http-svc
          servicePort: 80
        path: /something(/|$)(.*)

示例:https://kubernetes.github.io/ingress-nginx/examples/rewrite/#examples

票数 1
EN

Stack Overflow用户

发布于 2021-08-20 07:18:28

解决方案是

更改自:

代码语言:javascript
复制
nginx.ingress.kubernetes.io/rewrite-target: /$2

至:

代码语言:javascript
复制
nginx.ingress.kubernetes.io/rewrite-target: /$2/

所以yaml看起来是这样的:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    example.com/deployment-name: frontend-page
    example.com/ingress-hostnames: www.example.com
    nginx.ingress.kubernetes.io/rewrite-target: /$2/
spec:
  rules:
  - host: www.example.com
    http:
      paths:
      - backend:
          serviceName: frontend-page
          servicePort: 8080
        path: /front(/|$)(.*)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68664707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档