Limitación de Tasa con Proxy Inverso

Tenía una pregunta sobre qué encabezado se está utilizando para limitar la velocidad. Como contexto, tenemos un nginx.conf con set_real_ip y estamos utilizando un proveedor que nos envía tráfico con la IP real del cliente en el encabezado Some-Client-IP.

  sendfile on;
set_real_ip_from ...;
set_real_ip_from ...;
set_real_ip_from ...;
set_real_ip_from ...;

real_ip_header Some-Client-IP;
real_ip_recursive on;

Some-Client-IP es lo que obtenemos de upstream con la IP real del usuario.

En la configuración actual de discourse.conf en conf.d para nginx, tenemos el valor predeterminado:

Para creo que todas las rutas en general

    proxy_set_header Host $http_host;
    proxy_set_header X-Request-Start "t=${msec}";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $thescheme;
    proxy_pass http://discourse;

¿Discourse mira X-Forwarded-For o X-Real-IP para limitar la velocidad? Creo que está mirando X-Forwarded-For porque en production.log veo la IP de mi proxy inverso. ¿Es la solución correcta cambiar X-Forwarded-For para que también mire a $remote_addr?

De este hilo, parece que alguien simplemente eliminó esa línea Last IP shows Reverse Proxy IP address - #5 by schleifer

Gracias

1 me gusta

¿Añadiste esa estrofa a tu app.yml? Esas configuraciones deben estar en el NGINX que está dentro del contenedor. Ver también Set up Discourse on a server with existing Apache sites. Eso es para Apache, pero la parte que va en app.yml es la misma, independientemente de lo que esté haciendo el proxy inverso.

Esas estrofas están en el nginx.conf actual en lugar de nuestro contenedor bajo conf.d/discourse.conf.

Para la parte de app.yml, ¿te referías a

run:
  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: "types {"
      to: |
        set_real_ip_from 172.17.0.0/24;
        real_ip_header X-Forwarded-For;
        real_ip_recursive on;
        types {

No tenemos HAProxy fuera de los contenedores, tenemos un proveedor de DNS que hace algo de preprocesamiento por nosotros, por lo que el real_ip_header está en otro valor de encabezado, y en realidad tenemos una lista de direcciones IP que deben reemplazarse.

De hecho, también vemos una lista de X-Forwarded-For, me pregunto si esa es la causa de que aparezcan las IP incorrectas.

Por ejemplo, creo que vemos 111.11.11.111 en los registros de producción, pero no 55.555.55.55, que es lo que queremos (ya que está establecido en x-real-ip)

HTTP_X_FORWARDED_FOR	111.11.11.111, 22.22.22.222, 333.33.33.333, 55.555.55.55
HTTP_X_REAL_IP	55.555.55.55

Entonces necesitarás ajustar la configuración recomendada en consecuencia.

O, si no te importan las direcciones IP o la limitación de velocidad, puedes recordarle la plantilla de limitación de velocidad.

1 me gusta