nginx入口控制器转发源ip

2023-11-26

我已经为应用程序设置了入口,但想要将我的 IP 地址列入白名单。所以我创建了这个 Ingress:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/whitelist-source-range: ${MY_IP}/32
  name: ${INGRESS_NAME}
spec:
  rules:
  - host: ${DNS_NAME}
    http:
      paths:
      - backend:
          serviceName: ${SVC_NAME}
          servicePort: ${SVC_PORT}
  tls:
  - hosts:
    - ${DNS_NAME}
    secretName: tls-secret

但是当我尝试访问它时,我得到了 403 禁止,并且在 nginx 日志记录中我看到了一个客户端 ip,但它来自集群节点之一,而不是我的家庭 ip。

我还使用此配置创建了一个配置映射:

data:
  use-forwarded-headers: "true"

在容器中的 nginx.conf 中,我可以看到它已正确传递/配置,但我仍然收到 403 禁止,并且仍然只有来自集群节点的客户端 IP。

我在 AKS 集群上运行,nginx 入口控制器位于 Azure 负载均衡器后面。 nginx 入口控制器 svc 以负载均衡器类型公开,并锁定 svc 打开的节点端口。

我需要在 Nginx 中配置其他东西吗?


如果您已经安装了 nginx-ingress舵图,您可以简单地配置您的values.yaml文件与controller.service.externalTrafficPolicy: Local,我相信这将适用于您的所有服务。否则,您可以使用以下命令配置特定服务service.spec.externalTrafficPolicy: Local对这些特定服务达到相同的效果。

以下是一些可以加深您理解的资源:

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

nginx入口控制器转发源ip 的相关文章

随机推荐

  • 使用不带 url 的 Web 浏览器自动下载文件

    我一直在使用 System Windows Forms WebBrowser 用 C 编写 WebCrawler 我正在尝试从网站下载文件并将其保存在本地计算机上 更重要的是 我希望这是完全自动化的 单击一个调用 JavaScript 函数
  • 从 Mongoose 模型中找到的本机驱动程序不返回光标

    我正在尝试执行本机 MongoDBfind查询通过collection猫鼬的财产Model 我不提供回调 所以我希望 find 返回一个Cursor对象 但它返回undefined反而 根据猫鼬文档 正在使用的驱动程序可以通过访问YourM
  • Cassandra 中的计数器与 Int 列?

    我是卡桑德拉的新手 我不明白在表中使用计数器有什么好处 或者甚至在不同的表中 如果非计数器列不是复合主键的一部分 当我有一些像 x x 这样的语句时 为什么我们不使用 Int 类型的列 使用 int 或 counter 有什么区别 Cass
  • 错误!无法解析模块/操作。这通常表示拼写错误、集合丢失或模块路径不正确

    我的 Ansible 剧本中有一个 Ansible Collections 如下所示 name Create a profile for the user community windows win user profile usernam
  • 通过外部页面链接开通微信公众号

    我找不到任何关于这个问题的参考资料 我希望这里有人知道 我为客户创建了一个 html5 促销页面 该页面位于我的服务器上 我正在通过微信将页面地址分享给客户 他正在将其重新分享给他的朋友 当他们打开页面时 它会在微信应用浏览器中打开 到目前
  • 缩小评级栏大小时出现问题。

    我想减小评级栏的大小 我有一些样式属性可以做到这一点 但它们超出了用户交互的范围 它们只是指示器 所以 请告诉我如何缩小尺寸 提前致谢 如何粘贴给定的代码here 步骤1 您需要自己的评级星星res drawable 步骤 2 输入res
  • 使用 Group By 时出现 SQL 错误:每个 GROUP BY 表达式必须至少包含一列不是外部引用

    在执行我认为最简单的查询之一时 我遇到了此错误 我看到其他人也在这里遇到了问题 我已经浏览了我见过的每个解决方案 但他们有更多涉及的查询 所以我很难找出问题 我做了一个小虚拟表来说明我的问题 表名 组测试 id name 1 Mel 2 L
  • pandas groupby 之后并行应用

    我用过rosetta parallel pandas easy并行化apply after groupby 例如 from rosetta parallel pandas easy import groupby to series to f
  • Rust 如何处理杀死线程?

    生成的线程之间是否存在父子连接 如果我从生成其他线程的地方杀死该线程 那些线程也会被杀死吗 这个操作系统特定吗 Rust 如何处理杀死线程 事实并非如此 没有办法杀死一个线程 也可以看看 如何从另一个线程终止或挂起一个 Rust 线 程 R
  • 使用 JavaScript 将 1 年添加到日期

    我有以下日期 2014 10 29 我试图在日期上添加一年 不是 365 天 而是 1 年 var newDate new Date 2014 10 29 newDate setDate newDate getFullYear 1 var
  • 如何使用 WaitGroup 处理错误并终止 Goroutine

    我今天一直在研究 Goroutines Channels 和 WaitGroup 在阅读了一段时间之后 我终于开始理解这个概念了 我的问题是 我不确定在这样工作时如何处理错误 主要是因为我使用了 WaitGroup 使用 WaitGroup
  • 如何在 Lisp 中一次生成一个列表中元素的所有排列?

    我已经有了生成元素列表的所有排列的代码 然而 我意识到 如果我想操作生成的列表 我需要遍历这个列表 该列表可能会很大 因此维护成本很高 我想知道是否有一种方法可以通过每次调用生成排列 以便我可以检查列表是否与我需要的匹配 如果不匹配 我将生
  • 当存在重复的数组值时, array_diff() 具有“一对一”元素删除功能

    我有两个包含重复值的数组 test1 blah1 blah1 blah1 blah1 blah2 test2 blah1 blah1 blah1 blah2 我试图获得数组差异 result array diff test1 test2 e
  • 未解决的参考:kotlinx

    我正在尝试在 Android Studio 中尝试 Kotlin 和 Kotlin Android 扩展 我在 Ubuntu 14 04 上的 Android Studio v 1 5 1 和 OS X El Capitan 上的 Andr
  • 获取与正在运行的应用程序关联的图标

    有了打开的应用程序的窗口句柄 我就可以使用 GetWindowText 函数从应用程序的标题栏中检索文本 我想更进一步并检索与同一应用程序关联的图标 我该怎么做呢 我浏览了我认为相关的 Win32 API 部分 但什么也没引起我的注意 任何
  • WebDriverException:转发新会话时出错,找不到:{platform=WINDOWS,browserName=FIREFOX,version=3.6}

    我是 Selenium Web 驱动程序和 Grid 2 的新手 我正在尝试运行一个测试用例 但它给了我一个例外 线程 main org openqa selenium WebDriverException 中出现异常 转发新会话时出错 找
  • 正则表达式匹配一定长度的全大写单词

    我有一个函数可以为那些坚持将所有内容都大写的顽皮用户修复大小写 我希望我的函数仅在字符串包含时被调用由 3 个或更多大写字母组成的大写单词 这可以用正则表达式来完成吗 例子 例如 I false DEAL true Welcome fals
  • ClearCase:加载特定目录的旧版本?

    如何在 UCM 快照视图中加载旧版本的目录 在我们的项目中 一位开发人员将未编译和不可编译的代码签入到 ClearCase 其他开发人员更新了她的观点 然后他没有编译项目 因为以前的开发人员未编译代码 因此 开发人员只想获取目录的先前版本
  • 将 SQLite 填充到内存中以进行单元测试

    我正在考虑使用 SQLite 作为 Oracle 数据库的内存存根 我可以轻松地将所有 DAL 命令定向到 SQLite 但我现在想知道如何轻松填充每个测试方法的数据 每种方法是否应该首先创建所需的表并插入特定测试的行 我应该在夹具设置阶段
  • nginx入口控制器转发源ip

    我已经为应用程序设置了入口 但想要将我的 IP 地址列入白名单 所以我创建了这个 Ingress apiVersion extensions v1beta1 kind Ingress metadata annotations cert ma