首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Kubernetes Nginx Ingress Controller中将Nginx IP附加到X-Forwarded-For

如何在Kubernetes Nginx Ingress Controller中将Nginx IP附加到X-Forwarded-For
EN

Stack Overflow用户
提问于 2020-06-12 12:12:26
回答 3查看 10.7K关注 0票数 2

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

我在Ingress注解中添加了代码片段。

代码语言:javascript
复制
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中有双重设置。

代码语言:javascript
复制
    proxy_set_header X-Forwarded-For        $remote_addr;
...
    proxy_set_header X-Forwarded-For "$remote_addr, $server_addr";

因此我的后端服务器将获得两个X-Forwarded-For

谁知道“如何禁用Nginx入口控制器生成的proxy_set_header部件”?

代码语言:javascript
复制
        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;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-12 22:12:03

你的配置片段没有被复制,实际上,当你在集群中部署NGINX控制器时,已经默认设置了proxy_set_header X-Forwarded-For $remote_addr;

要禁用此默认设置,您需要使用custom template

通过这样做,您可以拥有一个没有proxy_set_header X-Forwarded-For $remote_addr;的nginx.conf,这样您就可以根据需要使用您所描述的注释来设置它。

票数 3
EN

Stack Overflow用户

发布于 2021-03-13 17:05:01

对于我来说,公认的答案是 not worked。您只需要将下面的注释添加到入口对象中;

代码语言:javascript
复制
nginx.ingress.kubernetes.io/configuration-snippet: |
      more_set_headers "X-Forwarded-For $http_x_forwarded_for";

用于测试的

代码语言:javascript
复制
❯ curl -I https://example.com/path/here

HTTP/1.1 200 OK
cache-control: no-cache, no-store, max-age=0, must-revalidate
Date: Sat, 13 Mar 2021 08:52:02 GMT
expires: 0
pragma: no-cache
vary: Origin,Access-Control-Request-Method,Access-Control-Request-Headers
X-Forwarded-For: 88.888.8.8
Connection: keep-alive
票数 2
EN

Stack Overflow用户

发布于 2021-10-14 07:21:01

对于在这里使用similar problem的人来说,如果你使用Helm部署ingress-nginx控制器,一个替代的(可能更干净的)解决方案是在你的values.yml中将compute-full-forwarded-foruse-forwarded-headers都设置为true。不需要在Ingress中进行额外的配置(就像问题中的那个)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62337379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档