gpt4 book ai didi

nginx - 带有 nginx 和正则表达式的 Kubernetes/Helm 入口路径

转载 作者:行者123 更新时间:2023-12-02 01:24:57 24 4
gpt4 key购买 nike

我们的生态系统中有许多微服务,其中两个处理用户数据:

  • 用户服务 ->

    • POST/用户
    • 获取/users/[[:alnum:]]+
  • 文件服务 ->

    • POST/users/[[:alnum:]]+/documents
    • GET/users/[[:alnum:]]+/documents/[[:alnum:]]+

因此我想在 Ingress 中定义它:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{.Release.Name}}
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: "true"
ingress.kubernetes.io/enable-cors: "false"
ingress.kubernetes.io/ssl-redirect: "true"
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: "{{ template "fullname" . }}"
heritage: "{{ .Release.Service }}"
release: "{{ .Release.Name }}"
tier: frontend
spec:
tls:
- secretName: {{ template "tls.fullname" . }}
hosts:
- "staging.ourhost.com"
rules:
- host: "staging.ourhost.com"
http:
paths:
- path: "/users/[[:alnum:]]+"
backend:
serviceName: {{ .Values.api.services.user_service | quote }}
servicePort: 8080
- path: "/users/[[:alnum:]]+/documents"
backend:
serviceName: {{ .Values.api.services.document_service | quote }}
servicePort: 8888

这会导致在 ngix.conf 中设置以下内容:

location /users/[[:alnum:]]+ {
...
}

location /users/[[:alnum:]]+/documents{
...
}

即正则表达式未解析。

我尝试将其分成单独的入口并使用注释

ingress.kubernetes.io/rewrite-target: "/users/$1/documents"

但这会在 nginx.conf 中产生以下结果

location ~* ^/users/[[:alnum:]]+/documents/(?<baseuri>.*) {
set $proxy_upstream_name "default-dev-document_service-8888";

...

rewrite /users/[[:alnum:]]+/documents/(.*) /users/$1/documents/$1 break;
proxy_pass http://default-dev-document_service-8888;

}

问题(最后):

  • 为什么总是附加 $1?这对我来说似乎很奇怪
  • 有人知道另一种使路径与正则表达式一起使用的方法吗?

如有任何建议,我们将不胜感激

最佳答案

经过大量搜索,似乎我想要做的事情在 ingress 中(还)不可能实现。我开了一个PR与他们一起,我正在等待看看它是否会合并。

我尚未公开部署包含此更改的版本,但可以使用 k8s 的开发文档构建分支

关于nginx - 带有 nginx 和正则表达式的 Kubernetes/Helm 入口路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45442182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com