Estoy investigando la limitación de velocidad usando HttpLimitReqModule de nginx . Sin embargo, todas las solicitudes provienen de la misma IP (un equilibrador de carga), con la dirección IP real en los encabezados.
¿Hay alguna manera de tener nginx rate-limit basado en la ip en el X-Forwarded-For
encabezado en lugar de la ip de la fuente?
fuente
$binary_remote_addr
variable se configura correctamente.La
limit_req_zone
directiva define la variable que se utilizará como clave para la agrupación de solicitudes.Por lo general,
$binary_remote_addr
se usa en lugar de$remote_addr
porque es más pequeño y ahorra espacio.Quizás, alternativamente, desee utilizar el RealipModule .
Esto reescribirá las variables de dirección remota a la dirección proporcionada en un encabezado personalizado y también facilitará el registro y el uso de otras variables.
fuente
$binary_remote_addr
y$remote_addr
se configuran al valor de su encabezado configurado, por lo generalX-Forwarded-For
, sus variables estándar ahora son la "dirección IP del cliente real". Ejecutenginx -V
para ver si NGINX fue construido con--with-http_realip
. Entonces config es tan simple como:,set_real_ip_from 10.0.0.0/8;
real_ip_header X-Forwarded-For;
donde el rango CIDR es el de su equilibrador de carga ascendente que está configurando elX-Forwarder-For
encabezado.