加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

nginx-启用了ngx_http_realip_module的白名单cloudflare Ips

发布时间:2020-12-13 20:54:01 所属栏目:Nginx 来源:网络整理
导读:我在nginx上有一个运行cloudflare的网站,并希望阻止所有未通过cloudflare的请求. 通常,我会将nginx配置中的nginx IP列入白名单,并拒绝其他所有IP. 但是我正在运行ngx_http_realip_module,它将X-Forward-For地址(这是来自Visitor的实际Ip)设置为request-IP,因

我在nginx上有一个运行cloudflare的网站,并希望阻止所有未通过cloudflare的请求.

通常,我会将nginx配置中的nginx IP列入白名单,并拒绝其他所有IP.

但是我正在运行ngx_http_realip_module,它将X-Forward-For地址(这是来自Visitor的实际Ip)设置为request-IP,因此请求被拒绝.

有没有一种方法可以使此白名单工作而无需停用ngx_http_realip_module?此外,此白名单应仅适用于对Nginx的请求,不适用于其他服务

提前致谢

最佳答案
我想出的唯一可以使用nginx完成的解决方案需要nginx 1.9.7或更高版本.

您可以使用ngx_http_geo_module识别和阻止不是cloudflare ip的任何ip的响应.

使用此地理位置块.

geo $realip_remote_addr $cloudflare_ip {
    default          0;
    103.21.244.0/22  1;
    103.22.200.0/22  1;
    103.31.4.0/22    1;
    104.16.0.0/12    1;
    108.162.192.0/18 1;
    131.0.72.0/22    1;
    141.101.64.0/18  1;
    162.158.0.0/15   1;
    172.64.0.0/13    1;
    173.245.48.0/20  1;
    188.114.96.0/20  1;
    190.93.240.0/20  1;
    197.234.240.0/22 1;
    198.41.128.0/17  1;
    199.27.128.0/21  1;
    2400:cb00::/32   1;
    2405:8100::/32   1;
    2405:b500::/32   1;
    2606:4700::/32   1;
    2803:f800::/32   1;
    2c0f:f248::/32   1;
    2a06:98c0::/29   1;
}

然后,您可以将其添加到服务器块中.

if ($cloudflare_ip != 1) {
    return 444;
}

对于所有不是来自$cloudflare_ip的连接,它将关闭连接.

之所以有效,是因为我在geo块中使用了$realip_remote_addr,当使用real_ip_header CF-Connecting-IP时,该块保留了原始客户端地址.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读