Echte Besucher-IPs für Nginx hinter Cloudflare wiederherstellen
Diese Funktion erfordert das Nginx-Modul ngx_http_realip_module
Laut der offiziellen Cloudflare-Dokumentation fügen Sie Folgendes zum http-Block Ihrer Konfigurationsdatei hinzu:
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
# use any of the following two
real_ip_header CF-Connecting-IP;
#real_ip_header X-Forwarded-For;Eine Anmerkung von meinem Zukunfts-Ich:
Ehrlich gesagt kann die Backend-Anwendung auch ohne dieses Modul oft die echte IP des Clients erkennen, da sie die Header
CF-Connecting-IPoderX-Forwarded-Fordirekt auslesen kann (vorausgesetzt,X-Forwarded-Forwurde nicht von Nginx überschrieben). Aber, wenn ich mich recht erinnere, behandelt Nginx selbst die Adresse imX-Forwarded-For-Header nicht als die echte IP des Clients. Daher sind die Adressen, die Sie in den Nginx-Logs sehen, allesamt Adressen des CDN.Der Zweck des
ngx_http_realip_moduleist es, Nginx selbst dazu zu bringen, einen von Ihnen konfigurierten, spezifischen Header zu lesen und dessen Wert als die echte IP des Clients zu behandeln. Aus Sicherheitsgründen können Sie es dann so konfigurieren, dass es diesem Header nur bei Verbindungen vertraut, die von den IP-Bereichen der Allow-List stammen (d.h. den IPs von Cloudflare). Bei allen anderen Verbindungen greift es darauf zurück, die ursprüngliche Quelladresse von der IP-Schicht als Adresse des Clients zu verwenden.Wie ich bereits erwähnt habe, ist es bei Verwendung von Cloudflare besser, einfach mit
cloudflaredeinen Tunnel zu erstellen. Auf diese Weise kann manset_real_ip_fromeinfach auf die lokale Loopback-Adresse setzen und muss die Liste der Cloudflare-IP-Bereiche nicht mehr regelmäßig aktualisieren.