代码之家  ›  专栏  ›  技术社区  ›  Andrey Okhotnikov

Kubernetes Nginx反向代理返回URL

  •  0
  • Andrey Okhotnikov  · 技术社区  · 6 年前

    我正在用nginx ingress运行k8s。它指向 https://www.example.com/app 在某个pod上,将“/应用程序”重写为“/”,应用程序侦听80并提供“/”:

    kind: Ingress
    metadata:
      annotations:
        kubernetes.io/ingress.class: nginx
        nginx.ingress.kubernetes.io/rewrite-target: /
      labels:
        app: example
      name: example
      namespace: default
    spec:
      rules:
      - host: www.example.com
        http:
          paths:
          - backend:
              serviceName: app
              servicePort: 80
            path: /app
          - backend:
              serviceName: app
              servicePort: 80
            path: /app/
      tls:
      - hosts:
        - www.example.com
        secretName: example-tls
    

    如果我要 https://www.example.com/app 请求传递给pod,pod用另一个URL(例如/内容)响应,我的浏览器显示 https://www.example.com/content -它是404,因为“/内容”没有进入规则。AFAIK nginx可以使用sub\u过滤器重写响应。另一种方法是使用一些可配置的路径前缀开发应用程序。我也可以使用base\u url,但只能与html一起使用。但有没有简单的方法来传递前缀作为返回,所以如果pod return“/content”nginx将其重写为 https://www.example.com/app/content

    非常感谢。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Anton Kostenko    6 年前

    但有没有简单的方法来传递前缀作为返回,所以如果pod return“/content”nginx将其重写为 https://www.example.com/app/content

    不,没有简单的方法可以通过入口规则来实现。

    这可以通过Nginx本身实现,但不能在Nginx入口中实现。

    我强烈建议您从应用程序返回正确的路径。