update_cloudflare_ips_for_nginx.sh 905 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/bin/bash
  2. # output file
  3. OUTPUT_FILE="$1"
  4. OUTPUT_DIR=$(dirname "$OUTPUT_FILE")
  5. mkdir -p "$OUTPUT_DIR"
  6. # check root
  7. if [[ $EUID -ne 0 ]]; then
  8. exit 1
  9. fi
  10. # Cloudflare IPs URL
  11. CF_IPV4_URL="https://www.cloudflare.com/ips-v4"
  12. CF_IPV6_URL="https://www.cloudflare.com/ips-v6"
  13. # write file header
  14. cat <<EOF > $OUTPUT_FILE
  15. # Cloudflare Real IP Configuration
  16. # Generated at: $(date)
  17. EOF
  18. # write IPv4 header
  19. cat <<EOF >> $OUTPUT_FILE
  20. # IPv4: $CF_IPV4_URL
  21. EOF
  22. # fetch & process IPv4
  23. curl -sL $CF_IPV4_URL | sed 's|^|set_real_ip_from |; s|$|;|' >> $OUTPUT_FILE
  24. # write IPv6 header
  25. cat <<EOF >> $OUTPUT_FILE
  26. # IPv6: $CF_IPV6_URL
  27. EOF
  28. # fetch & process IPv6
  29. curl -sL $CF_IPV6_URL | sed 's|^|set_real_ip_from |; s|$|;|' >> $OUTPUT_FILE
  30. # write file footer
  31. cat <<EOF >> $OUTPUT_FILE
  32. # Using CF-Connecting-IP to fetch real ip
  33. real_ip_header CF-Connecting-IP;
  34. EOF
  35. # reload nginx
  36. systemctl force-reload nginx