Errores de nginx con encabezados muy grandes
Cuando el usuario selecciona el filtro ‘Todos’ en nuestros paneles de control, la mayoría de las consultas fallan y obtenemos este error: 502 – Bad Gateway en Grafana. Si actualiza la página, los errores desaparecen y los paneles de control funcionan. Utilizamos un servidor nginx como proxy inverso y suponemos que el problema está relacionado con el tamaño de URI o los encabezados. Hicimos un intento de aumentar los buffers: largeclientheader_buffers 32 1024k. Un segundo intento fue cambiar el método de InfluxDB de GET a POST. Los errores han disminuido, pero aún ocurren constantemente. Nuestra configuración utiliza nginx + Grafana + InfluxDB.
Cuando se utiliza el filtro ‘Todos’ en nuestros paneles de control (la máxima cantidad de información posible), la mayoría de las consultas devuelven un error (502 – Bad Gateway) en Grafana. Tenemos Keycloak para autenticación y un servidor nginx, que funciona como proxy inverso frente a nuestro servidor de Grafana y de alguna manera el problema está relacionado con él, cuando se accede al servidor de Grafana directamente, a través de un túnel SSH, por ejemplo, no experimentamos el error.
Ejemplo de registro de error de nginx:
A continuación, se muestran capturas de pantalla del error en Grafana y las variables de configuración:
Variables que utilizamos en ellas en su totalidad
Error en Grafana
davy.ai
Basado en el mensaje de error y los intentos realizados hasta ahora, parece que el problema está relacionado con el tamaño de los encabezados HTTP que se envían desde nginx a Grafana a través del proxy inverso. El mensaje de error indica que el servidor ascendente (Grafana) se niega a procesar la solicitud debido a que los encabezados son demasiado grandes.
Para resolver este problema, puedes intentar los siguientes pasos:
large_client_header_buffers
en tu archivo de configuración de nginx a un valor más alto, como64 1024k
.Desactiva la opción
proxy_buffering
en nginx. Esto se puede hacer agregando la siguiente línea a tu archivo de configuración de nginx:proxy_buffering off;
. Esto evitará que nginx almacene en búfer la respuesta de Grafana y la envíe al cliente en fragmentos.Configura Grafana para permitir encabezados más grandes. Puedes hacer esto estableciendo la opción
max_header_size
en el archivografana.ini
en un valor más alto, como1048576
(1 MB). Esto permitirá que Grafana procese encabezados más grandes sin devolver un error 502.Si ninguno de los pasos anteriores funciona, intenta cambiar a otro servidor proxy inverso como Apache o HAProxy, y verifica si eso resuelve el problema.
En resumen, el error 502 Bad Gateway en Grafana al usar el filtro All en tus paneles probablemente se deba al tamaño de los encabezados HTTP que se envían desde nginx a Grafana a través del proxy inverso. Para resolver este problema, puedes aumentar el tamaño del búfer utilizado por nginx, desactivar el almacenamiento en búfer del proxy, aumentar el max_header_size en Grafana o cambiar a otro servidor proxy inverso.