服务器测评网
我们一直在努力
广告
广告
广告
广告
广告
广告
广告
广告
广告
广告

Nginx 只允许来自 Cloudflare IP 的访问

广告
广告

前言

站长配置只允许来自 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 了!

heiseo免实名域名
赞(0) 打赏
未经允许不得转载:好主机测评网 » Nginx 只允许来自 Cloudflare IP 的访问
好主机测评广告位招租-600元/3月
好主机测评广告位招租-600元/3月

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫