Varnish 404错误怎么设置不缓存

配置的varnish,主要是做图片缓存,但是发现如果访问了一个不存在的路径图片,返回是404,就算把这个图片放上去了,重新访问
也是404,清除了这个图片的缓存访问才可以。
请问怎么设置这种想404状态吗的不缓存
backend default {
     .host = "ip";
     .port = "81";
}
backend test {
.host = "127.0.0.1";
.port = "8080";
}
acl local {
"localhost";
"127.0.0.1";
}
sub vcl_recv {
        if (req.http.host ~ "^js2.com$")
        {
        set req.backend = test;
        return (pass);
        }
#        if (beresp.status == "404")
#        {
#        return (pass);
#        }

        if (req.request == "PURGE") {
        if (!client.ip ~ local)
        { error 405 "Not Allowed.";
        return (lookup);
        }
                                                                }
        if (req.request == "GET" && req.url ~ "\.(jpg|png|gif|swf|jpeg|ico)$")
        {
        unset req.http.cookie;
        }
        if (req.http.x-forwarded-for)
        {
        set req.http.X-Forwarded-For = req.http.X-Forwarded-For ", " client.ip;
        }
                else { set req.http.X-Forwarded-For = client.ip;
                        }
        if (req.request != "GET" && req.request != "HEAD" && req.request != "PUT" && req.request != "POST" && req.request != "TRACE" && req.request != "OPTIONS" && req.request != "DELETE")
                {
                return (pipe);
                }
        if (req.request != "GET" && req.request != "HEAD")
                {
                return (pass);
                }
        if (req.http.Authorization || req.http.Cookie)
                {
                return (pass);
                }
        if (req.request == "GET" && req.url ~ "\.(php)($|\?)")
                {
                return (pass);
                }
        return (lookup);
}
sub vcl_pipe
        {
        return (pipe);
        }
sub vcl_pass
        { return (pass);
}
sub vcl_hash
        {
        set req.hash += req.url;
                if (req.http.host)
                {
                set req.hash += req.http.host;
                }
                else
                { set req.hash += server.ip; }
                return (hash);
        }
sub vcl_hit {
        if (!obj.cacheable)
        { return (pass); }
        return (deliver);
        }
sub vcl_miss
        {
        return (fetch);
        }
sub vcl_fetch {
        if (!beresp.cacheable)
                { return (pass);
                }
        if (beresp.http.Set-Cookie)
                { return (pass); }
        if (beresp.http.Pragma ~ "no-cache" || beresp.http.Cache-Control ~ "no-cache" || beresp.http.Cache-Control ~ "private")
                {return (pass); }
        if (req.request == "GET" && req.url ~ "\.(js|css|mp3|jpg|png|gif|swf|jpeg|ico)$")
                { set beresp.ttl = 7d; }
                return (deliver);
}
sub vcl_deliver {
                set resp.http.x-hits = obj.hits ;
                if (obj.hits > 0)
                { set resp.http.X-Cache = "HIT cqtel-bbs"; }
                else
                { set resp.http.X-Cache = "MISS cqtel-bbs"; }
}

posted @ 2018-03-07 14:32  屌丝的IT  阅读(584)  评论(0)    收藏  举报