如何配置nginx.ingress.kubernetes.io/rewrite-Target和spec.rules.http.paths.path以满足以下URI模式 [英] How to configure nginx.ingress.kubernetes.io/rewrite-target and spec.rules.http.paths.path to satisfy the following URI patterns

查看:25
本文介绍了如何配置nginx.ingress.kubernetes.io/rewrite-Target和spec.rules.http.paths.path以满足以下URI模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何配置nginx.ingress.kubernetes.io/rewrite-targetspec.rules.http.paths.path以满足以下URI模式?

/aa/bb-aa/coolapp
/aa/bb-aa/coolapp/cc

图例

  • a=a-z之间的任何字母。小写字母。正好是两个字母-不能再多了, 一点也不少。
  • b=a-z之间的任何字母。小写字母。恰好是两个字母--不多也不少。
  • c=任何有效的URI字符。小写字母。长度可变的-考虑辅助对象。

应与上述模式匹配的示例URI:s

/us/en-us/coolapp
/us/en-us/coolapp/faq
/us/en-us/coolapp/privacy-policy

注意

从0.22.0版开始,使用注释nginx.ingress.kubernetes.io/rewrite-target的入口定义不向后兼容以前的版本。在0.22.0版和更高版本中,请求URI中需要传递到重写路径的任何子字符串都必须在捕获组中显式定义。

注意:

捕获的组按时间顺序以$1$2...$n的形式保存在编号占位符中。这些占位符可以用作重写目标批注中的参数。

参考资料

  1. https://kubernetes.github.io/ingress-nginx/examples/rewrite/
  2. https://github.com/kubernetes/ingress-nginx/pull/3174

推荐答案

设计了以下配置-到目前为止,它适用于我的所有测试路线/要求。

regex与@GilGames发布的regex几乎相同。

我基于官方文档重写示例:https://kubernetes.github.io/ingress-nginx/examples/rewrite/#rewrite-target

除此之外,我还参加了https://www.regular-expressions.info/😁

的速成课程
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ing
  namespace: some-ns
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1/$2-$3/$5
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/affinity: "cookie"
    nginx.ingress.kubernetes.io/session-cookie-name: "INGRESSCOOKIE"
    nginx.ingress.kubernetes.io/session-cookie-path: /
    nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
    nginx.ingress.kubernetes.io/configuration-snippet: |
        if ($host = 'example.com')
        {
            rewrite ^ https://www.example.com$request_uri permanent;
        }
spec:
  tls:
  - hosts:
    - www.example.com
    - example.com
    secretName: tls-secret-test
  rules:
  - host: www.example.com
    http:
      paths:
      - path: /([a-z]{2})/([a-z]{2})-([a-z]{2})/coolapp(/|$)(.*)
        backend:
          serviceName: coolapp-svc
          servicePort: 80
  - host: example.com
    http:
      paths:
      - path: /([a-z]{2})/([a-z]{2})-([a-z]{2})/coolapp(/|$)(.*)
        backend:
          serviceName: coolapp-svc
          servicePort: 80

这篇关于如何配置nginx.ingress.kubernetes.io/rewrite-Target和spec.rules.http.paths.path以满足以下URI模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆