【问题标题】:preserving url in ingress nginx在入口 nginx 中保留 url
【发布时间】:2022-08-09 20:29:41
【问题描述】:

我正在尝试使用 https/TLS 配置在 K8S 中的服务前面放置一个入口 nginx 控制器。

我的服务正在使用 URL 来执行一些业务逻辑(如果 url 是 x.com 则执行此操作,如果 url 是 y.com 则执行此操作......)所以我必须将主机/url 转发给服务。

当我以前使用 nginx 时,以下配置成功了:

        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $host

如何确保使用入口 nginx 控制器服务获取原始使用的 url?

    标签: kubernetes kubernetes-ingress nginx-ingress


    【解决方案1】:

    您可以将 url 重写到后端,同时将浏览器 url 保留在 nginx ingress 中。

    重写服务的路径,同时在 kubernetes 上使用 nginx 入口保留浏览器 url。

    它将创建一个捕获组并将其发送到适当的服务。这是一个入口示例:

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: "rewrite"
      annotations:
        kubernetes.io/ingress.class: nginx
        nginx.ingress.kubernetes.io/rewrite-target: /$2
    spec:
      rules:
        - http: example.com
            paths: 
              - path: /something(/|$)(.*)
                backend:
                  serviceName: echo-svc
                  servicePort: 80
            
    

    此入口将请求将 example.com 传送到 echo1-svc(service)。

    有关更多信息,请关注此doc

    【讨论】:

      猜你喜欢
      • 2019-03-06
      • 1970-01-01
      • 2011-05-18
      • 2018-05-06
      • 1970-01-01
      • 2017-05-12
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多