Este artículo explica cómo hacer que el Web Accelerator de Sakura Cloud almacene en caché los errores 502 (Bad Gateway) y 504 (Gateway Timeout).
Puede haber un acceso frecuente a contenido que no se puede almacenar en caché, o incluso contenido que sí se puede almacenar en caché, que provoca que el servidor de origen devuelva un 502 (Bad Gateway) o 504 (Gateway Timeout) debido a una alta carga del servidor.
Normalmente, las respuestas de error de nginx y otros servidores no incluyen el encabezado Cache-Control, lo que significa que no se almacenan en caché, lo que resulta en una carga continua en el servidor de origen.
Por lo tanto, al agregar el encabezado Cache-Control a las respuestas de error mediante la configuración de nginx, se puede reducir la carga en el servidor de origen al permitir que el Web Accelerator almacene en caché.
Se asume que se utiliza nginx en el origen y que hay un servidor de aplicaciones como upstream.
Configuración de nginx
location / {
error_page 502 = @webaccel_handle_504;
error_page 504 = @webaccel_handle_504;
# Omitido
}
location @webaccel_handle_502 {
add_header Cache-Control "s-maxage=30" always;
return 502;
}
location @webaccel_handle_504 {
add_header Cache-Control "s-maxage=30" always;
return 504;
}
Con la configuración anterior, si nginx devuelve una respuesta de error 502 o 504, se agregará el encabezado Cache-Control con “s-maxage=30”, permitiendo que el Web Accelerator almacene en caché durante 30 segundos.
Esto se espera que alivie la carga en el servidor de origen al almacenar en caché también los errores temporales.
Nota
- Si se va a agregar add_header también a las respuestas de error como error_page, es necesario incluir “always”.