Ich untersuche die Geschwindigkeitsbegrenzung mit dem HttpLimitReqModule von Nginx . Anforderungen kommen jedoch alle von derselben IP (einem Loadbalancer) mit der tatsächlichen IP-Adresse in den Headern.
Gibt es eine Möglichkeit, das Nginx-Ratenlimit basierend auf der IP-Adresse im X-Forwarded-For
Header anstelle der IP-Adresse der Quelle festzulegen?
quelle
$binary_remote_addr
Variable korrekt gesetzt.Die
limit_req_zone
Direktive definiert die Variable, die als Schlüssel für die Anforderungsgruppierung verwendet werden soll.In der Regel wird der
$binary_remote_addr
verwendet, anstatt$remote_addr
dass er kleiner ist und Platz spart.Vielleicht möchten Sie alternativ das RealipModule verwenden .
Dadurch werden die Remote-Adressvariablen in die in einem benutzerdefinierten Header angegebene Adresse umgeschrieben und die Protokollierung sowie die Verwendung anderer Variablen vereinfacht.
quelle
$binary_remote_addr
und$remote_addr
normalerweise auf den Wert Ihres konfigurierten Headers eingestellt sind,X-Forwarded-For
sind Ihre Standardvariablen jetzt die "echte Client-IP-Adresse". Führennginx -V
Sie den Befehl aus, um festzustellen, ob NGINX mit erstellt wurde--with-http_realip
. Dann ist config so einfach wieset_real_ip_from 10.0.0.0/8;
real_ip_header X-Forwarded-For;
:, wobei der CIDR-Bereich der Ihres Upstream-Load-Balancers ist, der denX-Forwarder-For
Header setzt.