crx349 发表于 2022-8-23 23:05:18

使用Cloudflare后配置Nginx获取客户端IP

需求

使用Cloudflare作为cdn加速前端,需要nginx获取真实访客ip地址

环境:
centos 7.9 X64 宝塔 7

解决:

宝塔下需要在 计划任务 里面
配置一个脚本(每10分钟执行一次)
#!/usr/bin/env bash
# 功能: 生成 cloudflare 代理IP列表,用户配置nginx获取客户端真实IP地址

cf_ipv4="https://www.cloudflare.com/ips-v4"
cf_ipv6="https://www.cloudflare.com/ips-v6"
mod_cffile="/www/server/panel/vhost/nginx/cloudflare.conf"

get_cfipinfo() {
    # 生成nginx配置记录格式: set_real_ip_from 127.0.0.0/22;
    curl $cf_ipv4 2>/dev/null | grep -v '#' | grep -v '^$' | sed 's/^/set_real_ip_from /g;s/$/;/g'
    curl $cf_ipv6 2>/dev/null | grep -v '#' | grep -v '^$' | sed 's/^/set_real_ip_from /g;s/$/;/g'
   
    echo
    # echo "real_ip_header CF-Connecting-IP;"
    echo "real_ip_header X-Forwarded-For;"
    echo
}

get_cfipinfo| tee $mod_cffile



说明下 /www/server/panel/vhost/nginx 路径为使用宝塔面板的默认目录

这样nginx就可以获取真实访问客户端ip了
页: [1]
查看完整版本: 使用Cloudflare后配置Nginx获取客户端IP