nginx的proxy_store可以将后端服务器的文件暂存在本地. 基于此,可以实现nginx的缓存后端服务器文件,加快访问速度。 比如:

upstream http_tornado {
    server 127.0.0.1:8000;
    server 127.0.0.1:8001;
}

server {
    # 省略其他配置
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ {
        root /opt/data/product/blog/cache;
        proxy_store on;
        proxy_store_access user:rw group:rw all:rw;
        proxy_temp_path /opt/data/product/blog/cache;
        if ( !-e $request_filename) {
            proxy_pass  http://http_tornado;
        }
    }
}

此配置中,针对html等静态文件,判断本地是否已经缓存。如果已经缓存,从本地获取。否则转发给后端服务器。

需要注意的是:由于proxystore没有过期机制,因此如果后端文件有更新。需要采用其他方式删除proxystore的缓存文件,以便proxy_store刷新文件。