¿429 demasiadas solicitudes: bien o mal? (por favor, ayuda)

hola

estoy usando UptimeRobot y varias veces por semana recibo errores 429 durante 1 a 5 minutos, pero eso es lo que veo en los registros.

Causa raíz
HTTP 429 - Demasiadas solicitudes
Inicio del incidente
2026-08-23 10:42:58
Resuelto en
2026-08-23 10:48:05
Duración
5 minutos y 7 segundos

estoy autoalojado y Discourse está detrás de un proxy inverso de HestiaCP

log.txt|adjunto (55.8 KB) aquí está el registro

me gustaría saber si este 429 afectó a todos los usuarios o solo a unos pocos ?

tengo una instalación estándar en docker con solo el puerto 80 abierto y 4 workers.

8 gb de ram y 8 núcleos

actualización: hice una prueba en mi pc abriendo 20/30 publicaciones hasta que me dio 429 y en mi teléfono con otra red funcionó bien. esto confirma que el 429 afecta a un solo cliente y no a todos los visitantes ?

Si no me equivoco, sí, solo afecta al cliente que envía la ráfaga de solicitudes.

¿debo ignorarlo o debo cambiar algo para aumentar el límite?

Si deseas ajustar los umbrales, consulta:

eso probablemente significa que todas las solicitudes parecen provenir de la misma IP y muchos usuarios están recibiendo errores 429. Ve a admin/users y mira qué dirección IP ves para ti mismo y para otro usuario. Si son las mismas, entonces necesitas configurar las cosas para que la IP real llegue a Discourse.

acabo de revisar y tengo la misma IP interna que los otros usuarios ! :frowning:

¿cómo puedo solucionarlo ?

¿Estás ejecutándote detrás de Cloudflare?

También estoy pasando por este juego :slight_smile:

sí, pero el problema es que todos los usuarios tienen la misma ip..

he añadido esto a app.yml y lo estoy probando ahora mismo

run:

  • replace:
    filename: /etc/nginx/conf.d/discourse.conf
    from: “server {”
    to: |
    server {
    set_real_ip_from 192.168.1.250;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;
  • exec: echo “Beginning of custom commands”
  • exec: echo “End of custom commands”

lo he probado ahora mismo desde el escritorio y el teléfono móvil

obtengo las direcciones ip correctas :smiley:

Si usas Cloudflare, lo que necesitas es la plantilla de Cloudflare. Parece imposible encontrar el tema canónico sobre esto, así que quizás pruebes en https://ask.discourse.com/ – Logré obtener un mensaje generado por IA sobre qué hacer, pero no sobre dónde encontrar la discusión al respecto. Me entristece que la IA encuentre la solución y la búsqueda no. :crying_cat:

bueno… sí, le pregunté a ChatGPT, hice una copia de seguridad antes y luego hice una prueba. Hasta ahora, todo bien :smiley:

Yo siempre usaría https://ask.discourse.com/ en lugar de una IA genérica (a menos que estés programando activamente y la IA tenga acceso al código de Discourse).

¿Sería esta parte?

  1. Para Cloudflare, añade cloudflare.template.yml a tu archivo app.yml.

¿Esta es una alternativa a la solución que encontré arriba?

Si usas Cloudflare con Discourse, deberías añadirlo. Creo que esa era la plantilla que mencionó @pfaffman, ¿no?

Creo que depende de tu configuración.

Yo tengo

             ┌─────────────────────────┐
             │       Cloudflare        │
             │ WAF / CDN / DDoS / SSL  │
             └────────────┬────────────┘
                          │
                   real client IP
                          │
                          ▼
             ┌─────────────────────────┐
             │   CentminMod Nginx      │
             │                         │
             │ cloudflare.conf         │
             │ restores real IP        │
             └────────────┬────────────┘
                          │
                   X-Forwarded-For
                   = real client IP
                          │
                          ▼
             ┌─────────────────────────┐
             │    Discourse Docker     │
             │                         │
             │ trusted proxy           │
             │ 172.16.0.0/12           │
             └─────────────────────────┘

Si uso la plantilla, la IP se restablece a la IP de Docker en lugar de la IP expuesta. Yo la transfiero en nginx.