首页 > 解决方案 > 如何在 Kubernetes Nginx Ingress Controller 中将 Nginx IP 附加到 X-Forwarded-For

问题描述

我想知道“如何将 Nginx IP 附加到 X-Forwarded-For”</p>

我在 Ingress 注释中添加了片段。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ing
  annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header X-Forwarded-For "$remote_addr, $server_addr";

但它似乎在 nginx.conf 中双重设置。

    proxy_set_header X-Forwarded-For        $remote_addr;
...
    proxy_set_header X-Forwarded-For "$remote_addr, $server_addr";

所以我的后端服务器会得到两个X-Forwarded-For

有谁知道“如何禁用 Nginx Ingress Controller 生成的 proxy_set_header 部分”?

        proxy_set_header X-Request-ID           $req_id;
        proxy_set_header X-Real-IP              $remote_addr;

        proxy_set_header X-Forwarded-For        $remote_addr;

        proxy_set_header X-Forwarded-Host       $best_http_host;
        proxy_set_header X-Forwarded-Port       $pass_port;
        proxy_set_header X-Forwarded-Proto      $pass_access_scheme;

        proxy_set_header X-Scheme               $pass_access_scheme;

标签: nginxkuberneteskubernetes-ingressnginx-ingress

解决方案


您的配置片段没有加倍,实际上发生的事情是proxy_set_header X-Forwarded-For $remote_addr;在您在集群中部署 NGINX 控制器时已经默认设置。

为了禁用此默认设置,您需要使用自定义模板

通过这样做,您可以免费使用 nginx.conf,proxy_set_header X-Forwarded-For $remote_addr;因此您可以使用您描述的注释根据需要进行设置。


推荐阅读