如何配置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
本文介绍了如何配置nginx.ingress.kubernetes.io/rewrite-Target和spec.rules.http.paths.path以满足以下URI模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何配置nginx.ingress.kubernetes.io/rewrite-target
和spec.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
的形式保存在编号占位符中。这些占位符可以用作重写目标批注中的参数。
参考资料:
- https://kubernetes.github.io/ingress-nginx/examples/rewrite/
- 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屋!
查看全文