Nginx 只允许来自 Cloudflare IP 的访问

2024-02-16 490 0

前言

站长配置只允许来自 Cloudflare IP 的访问可以增强网站的安全性和性能优化。通过限制访问者只能通过 Cloudflare 访问,站长可以获得 DDoS 保护、恶意流量过滤、加速网站加载速度等好处。此外,这种配置还有助于隐藏实际服务器的 IP 地址,提高服务器的安全性。然而,在实施此类限制之前,站长需要仔细考虑潜在影响,并确保正确配置了 Cloudflare 的 IP 地址范围,以避免误封锁合法访问。

Cloudflare 的 IP 地址范围可以查看: https://www.cloudflare.com/zh-cn/ips/

配置方法

要配置 Nginx 仅允许来自 Cloudflare IP 的访问,可以使用 Nginx 的 allow 和 deny 指令结合 Cloudflare 的 IP 地址范围来实现。

以下是一个完整示例,展示了如何在一个 server 块内配置只允许来自 Cloudflare IP 的访问:

server {
    listen 80;
    server_name your_domain.com;

    # 允许 Cloudflare 的 IP 地址访问
    # 定义允许的 IPv4 地址范围
    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/13;
    allow 104.24.0.0/14;
    allow 172.64.0.0/13;
    allow 131.0.72.0/22;

    # 定义允许的 IPv6 地址范围
    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;

    # 禁止其他 IP 地址访问
    deny all;

    # 此处添加其他 Nginx 配置,如 location 等
}

注意: 无需加下面代码,不然会获取到真实用户 IP,而非 Cloudflare 的 IP;

# 定义允许的 IPv4 地址范围
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
# ... (其他 IPv4 地址范围)

# 定义允许的 IPv6 地址范围
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
# ... (其他 IPv6 地址范围)

# 设置 Nginx 使用真实 IP 地址
real_ip_header CF-Connecting-IP;

set_real_ip_from 和 real_ip_header 是 Nginx 配置中用于处理真实 IP 地址的两个关键指令,它们一起用于从代理服务器中提取真实客户端的 IP 地址。

  1. set_real_ip_from 该指令用于定义可信的代理服务器的 IP 地址范围。你告诉 Nginx 哪些 IP 地址是可以信任的代理服务器,从这些地址中提取真实的客户端 IP 地址。

    示例:

    set_real_ip_from 103.21.244.0/22;
    set_real_ip_from 2400:cb00::/32;
    

     

real_ip_header 该指令用于指定用于提取真实 IP 地址的 HTTP 头字段。一旦 Nginx 通过 set_real_ip_from 定义了可信代理的 IP 地址范围,real_ip_header 告诉 Nginx 在这些 IP 地址中查找真实 IP 的 HTTP 头字段。

示例:

real_ip_header CF-Connecting-IP;
  1. 在这个示例中,CF-Connecting-IP 是 Cloudflare 代理使用的头字段,包含了真实客户端的 IP 地址。

协同使用这两个指令的步骤如下:

  1. 使用 set_real_ip_from 定义可信的代理服务器 IP 地址范围。
  2. 使用 real_ip_header 指定用于提取真实 IP 的 HTTP 头字段。

这样配置后,Nginx 将从定义的可信代理 IP 地址范围中提取真实客户端 IP 地址,而不是使用代理服务器的 IP 地址。这对于在代理服务器后正确识别用户的真实 IP 地址非常重要,尤其是在使用反向代理或负载均衡器的情况下。

然后 Nginx 重新加载配置就 OK 了!

    相关文章

    CentOS OpenSIPS教程:完整安装和配置指南
    CentOS PHP Mail: 配置和使用指南
    深入解析云服务器源码及其应用指南
    CentOS PyQt: 全面指南和最佳实践
    CentOS 32 Minimal: 轻量级服务器操作系统的最佳选择
    如何提升网站性能:详解云服务器加速解决方案

    发布评论