gpt4 book ai didi

nginx - 有没有办法使用 "ngx_http_access_module"、 "ngx_http_limit_req_module"和 "ngx_http_realip_module",而不会踩到对方的脚趾?

转载 作者:行者123 更新时间:2023-12-02 12:10:15 27 4
gpt4 key购买 nike

在我们的环境中,我们的流量通过代理到达我们的应用程序,并且此流量由 nginx-ingress-controller 接收和传递。
在这个 nginx-ingress-controller,我想做以下 3 件事:

  • 检索“真实”客户端的 IP 地址,以便我们可以在上游应用程序中将其用于日志记录等。
  • 根据客户端的“真实”IP 地址实现速率限制,以确保我们没有恶意行为者试图在我们的应用程序中捣乱
  • 只允许从代理服务器连接到我们的 nginx-ingress-controller

  • 从我所有的实验来看,这似乎是一个非此即彼的场景。 IE。我可以检索客户端的“真实”IP 地址并将其用于速率限制/将其传递给上游以进行日志记录,或者我可以使用代理服务器的连接 IP 地址并强制执行我的白名单。
    感觉应该可以做到这三个,但我还没有设法把它做好。
    我们在 kubernetes 上运行 Controller ,我正在使用配置映射注入(inject)所有相关配置。这是我要注入(inject)的设置:
      '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/12,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'
    'use-forwarded-headers': 'true'
    'forwarded-for-header': 'CF-Connecting-IP'
    'server-tokens': 'false'
    'proxy-body-size': '100M'
    'http-snippet' : |
    limit_req_zone $binary_remote_addr zone=perip:10m rate=20r/s;
    'location-snippet' : |
    limit_req zone=perip burst=40 nodelay;
    limit_req_status 429;
    limit_conn_status 429;
    allow 173.245.48.0/20;
    allow 103.21.244.0/22;
    allow 103.22.200.0/22;
    allow 103.31.4.0/22;
    allow 141.101.64.0/18;
    allow 108.162.192.0/18;
    allow 190.93.240.0/20;
    allow 188.114.96.0/20;
    allow 197.234.240.0/22;
    allow 198.41.128.0/17;
    allow 162.158.0.0/15;
    allow 104.16.0.0/12;
    allow 172.64.0.0/13;
    allow 131.0.72.0/22;
    allow 2400:cb00::/32;
    allow 2606:4700::/32;
    allow 2803:f800::/32;
    allow 2405:b500::/32;
    allow 2405:8100::/32;
    allow 2a06:98c0::/29;
    allow 2c0f:f248::/32;
    deny all;
    如果您有任何问题,或者我是否可以更清楚地解释上述任何内容,请告诉我。非常感谢任何和所有帮助!
    编辑:
    我在 Kubernetes/inress-nginx 上找到了一个功能请求,它处理我正在寻找的确切机制,但它似乎从未得到解决: https://github.com/kubernetes/ingress-nginx/issues/2257
    因此,如果有人知道任何解决方法,将不胜感激。

    最佳答案

    所以最终,我无法实现我最初帖子中明确提出的目标,但我能够创建一个解决方法。
    由于我们的基础架构托管在 GKE 上的 GCP 中,因此我能够将现有的第 4 层负载均衡器替换为第 7 层负载均衡器,这使我能够使用 Cloud Armor 策略强制执行 IP 地址白名单,并保留速率限制在“真实”客户端 IP 上直到 nginx。

    关于nginx - 有没有办法使用 "ngx_http_access_module"、 "ngx_http_limit_req_module"和 "ngx_http_realip_module",而不会踩到对方的脚趾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63710353/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com