如何通过网络加速器缓存502和504错误
服务器 网络加速器
Published: 2023-10-10

这是通过樱花云网络加速器缓存502(错误网关)和504(网关超时)的方法。

当访问频繁的内容无法缓存时,或者即使是可缓存的内容也可能由于服务器的高负载导致源服务器返回502(错误网关)或504(网关超时)。

通常,nginx等的错误响应没有Cache-Control头,因此无法缓存,这将导致对源服务器的负载持续增加。

因此,通过在nginx的设置中为错误响应添加Cache-Control头,可以让网络加速器缓存,从而减轻对源服务器的负载。

假设源服务器使用nginx,并且上游服务器为App服务器等。

nginx的设置

    location / {
        error_page 502 = @webaccel_handle_504;
        error_page 504 = @webaccel_handle_504;
        # 省略
    }
    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;
    }

通过上述设置,当nginx返回502或504的错误响应时,将在Cache-Control头中添加s-maxage=30,从而使网络加速器缓存30秒。

这将有助于缓存暂时的错误,从而减轻对源服务器的负载。

备注

  • 在错误时,如果要为error_page响应等添加add_header,需要加上always。