Sin impuesto Con impuesto

Error 502 al iniciar sesión que se va borrando cookies: Nginx

Varios miembros vieron errores 502 o 500 al entrar en su cuenta que desaparecían en incógnito o borrando cookies. Gustavo encontró la causa en el registro de Nginx: la respuesta traía cabeceras más grandes de lo que Nginx acepta. Explicamos cómo reconocerlo y qué ajustar.

Equipo Rekire
Actualizado: 04/08/2023 9
Error 502 al iniciar sesión que se va borrando cookies: Nginx
Compartir:

Un cliente intenta iniciar sesión y le sale un 502 Bad Gateway. En incógnito entra sin problema, o borrando cookies. En el grupo lo contaron varios miembros en 2023, uno de ellos con PrestaShop 1.7.8. Gustavo, de la comunidad, dejó la causa y el arreglo: Nginx rechaza respuestas con cabeceras demasiado grandes, y se soluciona ampliando sus búferes.

Cómo reconocerlo

En el registro de errores de Nginx (en Plesk, en los registros del dominio) aparece una línea como esta:

upstream sent too big header while reading response header from upstream

Traducido: el servidor que hay detrás de Nginx (Apache o PHP) ha devuelto una respuesta cuyas cabeceras no caben en el espacio que Nginx reserva para leerlas, así que Nginx corta y devuelve un 502. En el caso de Gustavo la URL era larga; en otros, el culpable son las cookies.

Por qué tiene que ver con las cookies

Cada cookie que la tienda crea o renueva viaja en una cabecera de la respuesta. Al iniciar sesión, PrestaShop y los módulos escriben a la vez varias: la del cliente, la del carrito, las de seguimiento. Si la cookie de PrestaShop ha ido creciendo, o un módulo guarda en ella más de la cuenta, las cabeceras se disparan. Gustavo recordaba que, hace años, un módulo de Google Analytics «llenaba» la cookie hasta romper la tienda. Por eso al borrar las cookies, o en incógnito, el error desaparece: la respuesta vuelve a ser pequeña.

Un compañero vivió el caso extremo: un error 500 en el front y en el back-office, a la vez en su ordenador y en el de su socia, en otra ciudad y con otro proveedor de Internet, que se arregló borrando cookies.

Cómo arreglarlo

Hay que ampliar los búferes de cabecera de Nginx. Qué directiva toca depende de cómo esté montado el servidor:

  • Nginx delante de Apache, que es lo habitual en Plesk: los búferes del proxy.
  • Nginx con PHP-FPM directamente: los búferes de FastCGI.

Los valores del proxy son los que dejó Gustavo en el grupo; los de FastCGI, unos valores de partida habituales. Van en la configuración del dominio (en Plesk, en las directivas adicionales de nginx del dominio):

# Nginx como proxy de Apache
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;

# Nginx con PHP-FPM
fastcgi_buffer_size 32k;
fastcgi_buffers 16 16k;

Pon solo el bloque que corresponda a tu servidor y guarda. Si el error sigue igual, comprueba cómo sirve PHP tu dominio: puede que tu montaje use el otro. En un hosting compartido sin acceso a esa configuración, pídeselo a soporte con la línea del registro delante.

Otro miembro, con un 502 al iniciar sesión en una tienda 1.7.8 con un tema comercial, recibió en el grupo la misma respuesta: aumentar los búferes del proxy. Con los valores de Gustavo le seguía fallando y le aconsejaron subirlos más, así que mira el registro después de cada cambio.

Y además, revisa qué engorda la cookie

Subir los búferes quita el síntoma. Si la cookie crece sin parar, conviene saber quién la llena: abre las herramientas del navegador, mira el tamaño de las cookies de tu dominio y desactiva en una copia los módulos sospechosos hasta que baje. Los de seguimiento y los que guardan preferencias del visitante son los primeros candidatos.

La documentación de cada directiva está en la referencia oficial de Nginx. Si prefieres que lo ajustemos nosotros, en Rekire lo hacemos dentro de los bonos de horas.

Esto salió en @PrestashopEsp, la mayor comunidad PrestaShop de España en Telegram. Ver la conversación

Cargando...
Cookies
Volver arriba