如何使用 NGINX 入口控制器从 Cloudflare 恢复原始客户端 IP

2024-02-11

我使用 Cloudflare 作为 CDN,它隐藏了客户端的真实 IP 地址 我使用 NGINX 入口控制器作为在 Google Kubernetes 引擎中运行的负载均衡器 所以我尝试恢复原始 IP 地址并尝试点击此链接https://support.cloudflare.com/hc/en-us/articles/200170706-How-do-I-restore-original-visitor-IP-with-Nginx- https://support.cloudflare.com/hc/en-us/articles/200170706-How-do-I-restore-original-visitor-IP-with-Nginx-由于我需要同一键“set-real-ip-from”的多个值,因此如何在 Nginx 入口的 configmap 中实现此功能?

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingressname
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.ingress.kubernetes.io/affinity: "cookie"
    nginx.ingress.kubernetes.io/session-cookie-name: "route"
    nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
    nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
spec:
  tls:
  - hosts:
    - example.com
    secretName: sslcertificate
  rules:
  - host: example.com
    http:
      paths:
      - backend:
          serviceName: service
          servicePort: 80
        path: /

我也遇到了这个问题,我花了很长时间才修复,但显然我所需要的只是这个配置:

apiVersion: v1
data:
  # Cloudflare IP ranges which you can find on https://www.cloudflare.com/ips/
  proxy-real-ip-cidr: "173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/13,104.24.0.0/14,172.64.0.0/13,131.0.72.0/22,2400:cb00::/32,2606:4700::/32,2803:f800::/32,2405:b500::/32,2405:8100::/32,2a06:98c0::/29,2c0f:f248::/32"
  # This is the important part
  use-forwarded-headers: "true"
  # Still works without this line because it defaults to X-Forwarded-For, but I use it anyways
  forwarded-for-header: "CF-Connecting-IP"
kind: ConfigMap
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

IMO 从文档中来看,这一切都不清楚。我必须搜索大量问题和实际模板文件本身才能弄清楚。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 NGINX 入口控制器从 Cloudflare 恢复原始客户端 IP 的相关文章

随机推荐

  • 如何使正则表达式仅匹配西里尔保加利亚字母

    您好 我想用空字符串替换拜尔加字母表中的所有字母 我看过这个链接如何将西里尔字母与正则表达式匹配 https stackoverflow com questions 1716609 how to match cyrillic charact
  • 多重赋值是 Obj-C 中的 hack 吗?

    所以 我有一个带有一堆属性的类 IKImageView 我知道视图 setProp BOOL 返回 void 然而 BOOL b view prop NO 似乎有效 如果我有一个返回布尔值的函数 f 有谁知道这是否真的在做 view set
  • 如何使用特定变量名来 save()

    我反复应用一个函数来读取和处理一堆 csv 文件 每次运行时 该函数都会创建一个数据框 this csv data 并使用 save 将其写入 RData具有唯一名称的文件 问题是 后来当我读到这些时 RData文件使用load 加载的变量
  • 如何检查容器的IP,获取它并将其添加到具有本地域名解析的/etc/hosts文件中

    我正在使用 docker 容器在 Linux Ubuntu 上工作 我希望将以下内容添加到新行中的 etc hosts 的最后一行 IP from docker container 主机名 分配 172 20 1 2 docker dev
  • Python Tkinter:在 for 循环中将函数与标签绑定

    我正在动态创建标签for loop using tkinter 我不知道将创建多少个标签 但单击每个标签时 必须使用特定参数调用特定函数 为此 我使用以下代码 for link in list of links link label Lab
  • zend框架自定义验证类

    我正在编写一个自定义验证器 它将检查电子邮件是否存在 如果数据库中已存在该电子邮件 则该表单无效 我很难找出自定义 Zend Validation 类的辅助路径和命名空间 我想调用类 My Validate EmailUnique 但我不断
  • java中的条形图

    我想更改每个条形的高度 例如红色部分为 10 蓝色部分为 20 但是当我增加高度值时 它会从底部增加图表 而我希望更改到顶部 你知道这有什么问题吗 import java awt Color import java awt Dimensio
  • 永远保留此构建选项 - Jenkins

    我知道有一个Keep this build forever詹金斯上的按钮 对此我有一个疑问 我有一个由一项主要工作和许多子工作 分为各个阶段 组成的配置 我想知道如果我点击主作业中的按钮 子作业中的文物是否也会永久存储 或者我应该进入每个子
  • 如何检索 YouTube 上直播活动的开始时间?

    我正在尝试返回并将已完成或正在进行的实时事件与现实世界的时间戳 例如 Twitter 的逐个播放 同步 我不拥有相关的实时事件 显然 这仅对可以倒带或重播的事件有用 例如许多与游戏相关的广播 有没有办法检索现场活动的开始时间 我尝试过以下方
  • 无法使用创建的新用户登录 sql server

    我创建了一个名为登录测试 SQL 身份验证 然后我创建了一个名为usertest通过此登录 用户创建成功 我将身份验证模式更改为混合模式 并重新启动了 SQLSERVERAGENT 和 MSSQLSERVER 服务 当我尝试使用创建的新用户
  • 我可以将 TypeScript 类型定义为 typeof 的所有可能结果值吗?

    我希望将类型定义为使用typeof某物上的操作员 本质上 我正在寻找一种更快的方法来做到这一点 而不需要任何类型的中间函数或变量 function getTypeOf value any return typeof value type T
  • 从 dcm4che2 迁移到 dcm4che3

    我使用了下面提到的来自此存储库的 dcm4che2 APIhttp www dcm4che org maven2 dcm4che http www dcm4che org maven2 dcm4che 在我的java项目中 dcm4che
  • 从 Linux 连接到 Windows IPython 内核

    我有一台 Windows 机器 我在其中启动 IPython 内核 来做一些在另一台机器上不可能做的事情 我有一台 Linux 机器 我想从它连接到 Windows 机器上运行的 IPython 内核 我可以通过 SSH 从 Linux 计
  • Django 二进制或 BLOB 模型字段

    我有一个 C 程序 可以将 pdf 插入 MySQL 数据库中 现在我想通过 django 检索该 pdf 但 django 的models FileField需要一个 上传到 参数 这意味着在幕后它实际上将文件存储在文件系统上而不是数据库
  • Magick Image 在图像后面创建阴影

    已经尝试了一段时间 现在尝试使用以下代码获得阴影 using MagickImage image new MagickImage C Users David Pictures YnTf9 png MagickImage shadow new
  • VB.NET:如何动态选择列表视图项?

    我需要根据之前选择的内容动态选择列表视图中的项目 从数据库中检索过去选择的项目并将其添加到 Arraylist 中 然后需要从许多不同的列表视图中选择这些项目 像这样通过索引执行此操作listRef1 Items 2 Checked Tru
  • 内容后出现随机空白(Webkit 浏览器错误)

    我的服务页面底部出现未知的空白 我在用着column count 2 将图像分成两列 更新 这是 Webkit 浏览器问题 问题是底部的额外空间mainCont 左侧栏 如果图像全部对齐 那么就会有大约 30 像素的不需要的空白 不过 如果
  • 运行 Haskell 代码时的架构 x86_64、Haskell OSX iconv

    当我在计算机上编译有效的 Haskell 代码时 它抛出了架构 x86 64 的错误 它在我朋友的具有相同架构的计算机上运行良好 ghc make BoardMain hs Linking BoardMain Undefined symbo
  • Android Studio - Vanguard 检测到(检测到不兼容的软件),但它甚至没有作为进程安装或打开

    Android studio 昨天工作正常 今天我启动了 android studio 突然它抛出 检测到不兼容的软件 我没有安装 Riot Vanguard 不久前删除了它 我仔细检查以找到安装 我找不到东西 为什么Android stu
  • 如何使用 NGINX 入口控制器从 Cloudflare 恢复原始客户端 IP

    我使用 Cloudflare 作为 CDN 它隐藏了客户端的真实 IP 地址 我使用 NGINX 入口控制器作为在 Google Kubernetes 引擎中运行的负载均衡器 所以我尝试恢复原始 IP 地址并尝试点击此链接https sup