Zajmuję się ograniczaniem prędkości za pomocą HttpLimitReqModule firmy nginx . Jednak wszystkie żądania pochodzą z tego samego adresu IP (moduł równoważenia obciążenia), z prawdziwym adresem IP w nagłówkach.
Czy istnieje sposób na ograniczenie prędkości nginx na podstawie adresu IP w X-Forwarded-For
nagłówku zamiast adresu IP źródła?
źródło
$binary_remote_addr
zmienna zostanie ustawiona poprawnie.limit_req_zone
Dyrektywa definiuje zmienną ma być używany jako klucz do żądania ugrupowania.Zwykle
$binary_remote_addr
używa się go raczej niż$remote_addr
dlatego, że jest mniejszy i oszczędza miejsce.Może alternatywnie chcesz użyć RealipModule .
Spowoduje to przepisanie zmiennych adresu zdalnego na adres podany w niestandardowym nagłówku, a także ułatwi rejestrowanie i użycie innych zmiennych.
źródło
$binary_remote_addr
i$remote_addr
zwykle są one ustawione na wartość skonfigurowanego nagłówka,X-Forwarded-For
więc standardowe zmienne są teraz „rzeczywistym adresem IP klienta”. Uruchom,nginx -V
aby sprawdzić, czy NGINX został zbudowany--with-http_realip
. Następnie konfiguracja jest tak prosta, jak:set_real_ip_from 10.0.0.0/8;
real_ip_header X-Forwarded-For;
gdzie zakres CIDR jest zakresem twojego równoważenia obciążenia, który ustawiaX-Forwarder-For
nagłówek.