如何在nginx ingress的子路径上暴露Sentry?

问题描述 投票:0回答:1

我的集群中运行着Sentry,我想用nginx ingress将它暴露在子路径上,但似乎它只在根路径上工作,我试了几种方法,但都不行。有没有什么配置可以让它在子路径上运行,因为我在sentry.conf.py文件中看到一些使用这两个变量的例子。

SENTRY_URL_PREFIX = 'sentry' FORCE_SCRIPT_NAME = 'sentry'。

但我不知道它是否有效

这里是sentry的ingress资源。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: "sentry-ingress"
  namespace: "tools"
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
  labels:
    app: sentry-ingress
spec:
  rules:
    - http:
        paths:
          - path: /
            backend:
              serviceName: "sentry"
              servicePort: 9000
kubernetes kubernetes-helm nginx-reverse-proxy sentry nginx-ingress
1个回答
1
投票

你的 ingress 不能正常工作。

nginx入口文档 您可以阅读。

重要提示: 如果 use-regexrewrite-target 注解被用于给定主机的任何Ingress,那么不区分大小写的正则表达式 位置修饰语 将在给定主机的所有路径上强制执行,无论它们被定义在哪个Ingress上。

也就是说,当你使用rewrite-target注解时。path 字段值被视为regexp而不是前缀。这就是为什么 path: / 是与字面意思相匹配的,而且只与 /.

因此,如果你想使用rewrite-target,你应该按以下方式操作。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: sentry-ingress
  namespace: tools
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  labels:
    app: sentry-ingress
spec:
  rules:
    - http:
        paths:
          - path: /sentry/(.*)
            backend:
              serviceName: sentry
              servicePort: 9000
© www.soinside.com 2019 - 2024. All rights reserved.