proxy_store

 Proxy_store 跟 Squid 是有区别的!! 最明显的一点在于其不具有expires,无法通过程序控制cache什么时间过期。往后要写个脚本定期删除缓存目录中的内容

以下是配置方式:

如果需要将文件缓存到本地,则需要增加如下几个子参数:
proxy_store on;
proxy_store_access user:rw group:rw all:rw;
proxy_temp_path 缓存目录;

其中,
proxy_store on 启用缓存到本地的功能,
proxy_temp_path 指定缓存在哪个目录下,如:proxy_temp_path /var/nginx_cache;

在经过上一步配置之后,虽然文件被缓存到了本地磁盘上,但每次请求仍会向远端拉取文件,为了避免去远端拉取文件,还必须增加:

            if ( !-e $request_filename) {
            proxy_pass  http://192.168.10.10;
            }

即改成有条件地去执行proxy_pass,这个条件就是当请求的文件在本地的proxy_temp_path指定的目录下不存在时,再向后端拉取。

整体配置例子:

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ {        #指定缓存文件类型
            expires 7d;      #设置浏览器过期时间
            root /data1/nginx_cache/iis;          #静态文件根目录目录(必须对应proxy_temp_path)
            proxy_store on;        #开启缓存机制
            proxy_store_access user:rw group:rw all:rw;       #缓存读写规则
            proxy_temp_path /data1/nginx_cache/iis;            #存放静态文件的缓存目录
            include proxy.conf;          # 外联proxy理的详细配置如proxy_set_header, client_max_body_size ….
            if ( !-e $request_filename) {     #正则表达式,匹配缓存目录中的文件与源文件是否存在)
            proxy_pass  http://192.168.10.10   # IIS 应用的服务器地址
            }
        }

posted @ 2017-10-12 00:43  start枫  阅读(416)  评论(0编辑  收藏  举报