nginx - 如何使用 Kubernetes DNS 查找 NGINX set_real_ip_from
问题描述
我在我的 K8 集群中编写了 NGINX 白名单服务。因为进入集群的所有内容都经过负载均衡器,所以我不得不将转发的 IP 地址而不是直接将源 IP 列入白名单。
在测试中,我在 NGINX 配置中这样硬编码它:
set_real_ip_from x.x.x.x;
real_ip_header X-Forwarded-For;
x.x.x.x
负载均衡器的 IP 在哪里。
这行得通。
我无法在实际部署中对 IP 进行硬编码,所以我希望使用该kube-dns
服务,就像我用于proxy_pass
:
resolver kube-dns.kube-system.svc.cluster.local;
proxy_pass http://{service}.{namespace}.svc.cluster.local:$server_port;
这也有效。
但是,此 DNS 查找似乎不适用于set_real_ip_from
:
resolver kube-dns.kube-system.svc.cluster.local;
set_real_ip_from {load balancer service}.kube-system.svc.cluster.local;
real_ip_header X-Forwarded-For;
当我运行它时,我只是得到access forbidden by rule, client: x.x.x.x
(它不在白名单中),x.x.x.x
负载均衡器的 IP 在哪里。这有点道理,因为set_real_ip_from
可能不知道查找 IP。
是否可以让 NGINX 为转发器地址进行 DNS 查找?
如果没有,也许有人有更好的方法来做到这一点。
谢谢!
解决方案
我想我只需要睡在这上面。比我做的简单多了。
我知道负载均衡器应该落入的范围,所以我可以为set_real_ip_from
.
例如:
set_real_ip_from 10.60.0.0/16;
real_ip_header X-Forwarded-For;
并且不需要 DNS 查找。
推荐阅读
- delphi - 需要 chilkat rsa SignHashENC (sha256) 替代品
- javascript - 如何调整 discord bot 试图在指定角色内踢出超过 bot 应有的次数?
- google-cloud-platform - 通过 Google Compute Engine 和 Cloud Logging 代理使用日志严重性
- javascript - 获取元素的宽度和高度,并使其成为 javascript 变量
- javascript - 一事件触发一类一id jQuery
- javascript - 从回调中获得空承诺
- javascript - 显示隐藏在 css 网格列中的下拉列表,并应用了剪辑路径
- node.js - nodejs typescript编译器在构建时传递env文件
- react-native - 获取数据反应原生
- sql - pgAdmin 如何调查数据库服务器上的流量