NGINX 代理到服务器并使用缓存作为备份

NGINX 代理到服务器并使用缓存作为备份

我们希望设置一个 NGINX 服务器,它将代理收到的所有请求到上游服务器,但当上游服务器发生故障/不可用时,它应该返回到最近收到的文件的本地缓存。设置它的最佳方法是什么?

我认为最好的方法是将 5xx 错误文档设置为类似

error_document 500 502 503 504 =200 /cache/;


location /cache/ {
    #Send cached files
}

但我不确定如何有效地*让 NGINX 缓存全部文件,同时仍然代理到上游,然后如何通过位置从缓存中拉回文件。

*不考虑 A) 使用同一缓存文件的多个版本快速填满磁盘,以及 B) 不过度降低请求速度

答案1

如果远程服务器上的文件没有改变,proxy_store可能对你有用。例如

    upstream big {
            server  serverfault.com:80;
    }

    root /somewhere;
    location / {
            try_files $uri @big;
    }
    location @big {
            proxy_pass http://big;
            proxy_set_header Host serverfault.com:80;
            proxy_store on;
    }

相关内容