
Wie aktiviere ich sowohl X-Real-IP als auch X-Forwarded-For in Nginx? Ich habe derzeit Folgendes, um echte IPs im Docker-Netzwerk zu erhalten.
set_real_ip_from 172.18.0.0/32;
real_ip_header X-Real-IP;
real_ip_recursive on;
Ich möchte auch echte IPs von Cloudflare an Docker-Container weitergeben. Wie verwende ich sowohl X-Real-IP als auch X-Forwarded-For in derselben Konfiguration, einen IP-Satz für X-Real-IP und einen IP-Satz für X-Forwarded-For?
Antwort1
Wenn Sie versuchen, echte IPs von CloudFlare abzurufen, sollten Sie stattdessen deren eigenen Header CF-Connecting-IP verwenden. Sie sollten die anderen Header ignorieren, wenn Sie sie nicht selbst generiert haben, da sie vom Client gefälscht werden könnten.
real_ip_header CF-Connecting-IP;
Antwort2
VersuchenKartepinge sie an (funktioniert nicht):
map $remote_addr $real_header { default X-Real-IP; 172.18.0.1 X-Forwarded-For; } server { real_ip_header $real_header; }
Versuchen Sie, diese Streams auf verschiedene Server aufzuteilen. Laut Handbuch kann real_ip_header pro Server oder Standort festgelegt werden, sodass Sie Folgendes können:
server { listen :8080; real_ip_header X-Real-IP; include "/all/other/stuff.conf"; } server { listen :8081; real_ip_header X-Forwarded-For; include "/all/other/stuff.conf"; }
Das Spielen mit Standorten erfordert viel mehr Syntax-Zucker, um sie zu trennen, und Sie werden wahrscheinlich if's verwenden müssen, aber sie sindteuflisch. Aber ich denke, es ist durchaus möglich, zwei interne Speicherorte zu erstellen und zwischen diesen beiden einen manuellen internen Umschreibvorgang durchzuführen. Dies wird für den Benutzer völlig verborgen bleiben.
Ich nehme an, dass das Spielen mit Lua auch hilfreich sein könnte, aber probieren Sie bitte zuerst die vorherigen Vorschläge aus.