@@ -1335,22 +1335,26 @@ if [ -n "$resolver" ]; then
13351335fi
13361336
13371337# https://github.com/ergin/nginx-cloudflare-real-ip/
1338- CLOUDFLARE_FILE_PATH=' /etc/nginx/conf.d/cloudflare.inc'
1339- echo " #Cloudflare" > $CLOUDFLARE_FILE_PATH
1340- echo " " >> $CLOUDFLARE_FILE_PATH
1338+ cf_ips=" $( curl -fsLm2 --retry 1 https://api.cloudflare.com/client/v4/ips) "
13411339
1342- echo " # - IPv4" >> $CLOUDFLARE_FILE_PATH
1343- for i in $( curl -s -L https://www.cloudflare.com/ips-v4) ; do
1344- echo " set_real_ip_from $i ;" >> $CLOUDFLARE_FILE_PATH
1345- done
1346- echo " " >> $CLOUDFLARE_FILE_PATH
1347- echo " # - IPv6" >> $CLOUDFLARE_FILE_PATH
1348- for i in $( curl -s -L https://www.cloudflare.com/ips-v6) ; do
1349- echo " set_real_ip_from $i ;" >> $CLOUDFLARE_FILE_PATH
1350- done
1340+ if [ -n " $cf_ips " ] && [ " $( echo " $cf_ips " | jq -r ' .success//""' ) " = " true" ]; then
1341+ cf_inc=" /etc/nginx/conf.d/cloudflare.inc"
13511342
1352- echo " " >> $CLOUDFLARE_FILE_PATH
1353- echo " real_ip_header CF-Connecting-IP;" >> $CLOUDFLARE_FILE_PATH
1343+ echo " [ * ] Updating Cloudflare IP Ranges for Nginx..."
1344+ echo " # Cloudflare IP Ranges" > $cf_inc
1345+ echo " " >> $cf_inc
1346+ echo " # IPv4" >> $cf_inc
1347+ for ipv4 in $( echo " $cf_ips " | jq -r ' .result.ipv4_cidrs[]//""' | sort) ; do
1348+ echo " set_real_ip_from $ipv4 ;" >> $cf_inc
1349+ done
1350+ echo " " >> $cf_inc
1351+ echo " # IPv6" >> $cf_inc
1352+ for ipv6 in $( echo " $cf_ips " | jq -r ' .result.ipv6_cidrs[]//""' | sort) ; do
1353+ echo " set_real_ip_from $ipv6 ;" >> $cf_inc
1354+ done
1355+ echo " " >> $cf_inc
1356+ echo " real_ip_header CF-Connecting-IP;" >> $cf_inc
1357+ fi
13541358
13551359update-rc.d nginx defaults > /dev/null 2>&1
13561360systemctl start nginx >> $LOG
0 commit comments