purge_url

Erik duja at torlen.net
Thu Dec 13 12:02:38 CET 2007


I will stop bothering the helpful guys at the irc for a minute and ask a question here ;) 

My VCL conf looks like this:
sub vcl_recv {
        #Change the host header to www.mysite.com
        if(req.http.host == "10.1.1.54" || req.http.host == "test.mysite.com") {
                set req.http.host = "www.mysite.com";
        }

        #Purge specified files from acl purge.
        #Purge = Delete the specified url from the cache
        if(req.request == "PURGE") {
                if(client.ip ~ purge) {
                        purge_url(req.url);
                }
        }

sub vcl_miss {
        #set http version 1.1
        set bereq.proto = "HTTP/1.1";

        if (req.request == "PURGE") {
                error 404 "The url could not be found in the cache.";
        }
}

sub vcl_hit {
        if (req.request == "PURGE") {
                set obj.ttl = 0s;
                error 200 "Purged successfully!";
        }
}

}
# End of VCL Conf

I receive a 404 error "The url could not be found in the cache." when I try to PURGE the url.
PURGE http://www.mysite.com/data/hello.gif HTTP/1.1

This is the varnishlog when I try to purge:

  12 RxRequest    c PURGE
   12 RxURL        c /data/hello.gif
   12 RxProtocol   c HTTP/1.1
   12 VCL_call     c recv
   12 VCL_acl      c MATCH purge "84.xx.xx.xx"
   12 VCL_return   c lookup
   12 VCL_call     c hash
   12 VCL_return   c hash
   12 Debug        c "Hash: /data/hello.gif#10.1.1.54:80#"
   12 VCL_call     c miss
    0 Debug          "VCL_error(404, The url could not be found in the cache.)"
   12 VCL_return   c error
   12 Length       c 453
   12 TxProtocol   c HTTP/1.0
   12 TxStatus     c 404
   12 TxResponse   c Not Found
   12 TxHeader     c Server: Varnish
   12 TxHeader     c Retry-After: 0
   12 TxHeader     c Content-Type: text/html; charset=utf-8
   12 TxHeader     c Content-Length: 453
   12 TxHeader     c Date: Thu, 13 Dec 2007 11:34:50 GMT
   12 TxHeader     c X-Varnish: 1188471893
   12 TxHeader     c Age: nan
   12 TxHeader     c Via: 1.1 varnish
   12 TxHeader     c Connection: keep-alive

When I try to request it with GET i receive:

  12 ReqStart     c 84.xx.xx.xx 32162 1188471894
   12 RxRequest    c GET
   12 RxURL        c /data/hello.gif
   12 RxProtocol   c HTTP/1.1
   12 RxHeader     c Host: www.mysite.com
   12 RxHeader     c User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
   12 RxHeader     c Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
   12 RxHeader     c Accept-Language: sv,en-us;q=0.7,en;q=0.3
   12 RxHeader     c Accept-Encoding: gzip,deflate
   12 RxHeader     c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
   12 RxHeader     c Keep-Alive: 300
   12 RxHeader     c Connection: keep-alive
   12 RxHeader     c Cookie:__utma=75765975.864378540.1197378455.1197453843.1197535348.6; 
   12 VCL_call     c recv
   12 VCL_return   c lookup
   12 VCL_call     c hash
   12 VCL_return   c hash
   12 Debug        c "Hash Match: /data/hello.gif#www.mysite.com#"
   12 Hit          c 1188471893
   12 VCL_call     c hit
   12 VCL_return   c deliver
   12 Length       c 905
   12 VCL_call     c deliver
   12 VCL_return   c deliver
   12 TxProtocol   c HTTP/1.1
   12 TxStatus     c 200
   12 TxResponse   c OK
   12 TxHeader     c Server: Zeus/4.3
   12 TxHeader     c Content-Type: image/gif
   12 TxHeader     c Content-Language: sv-SE
   12 TxHeader     c Content-Length: 905
   12 TxHeader     c Date: Thu, 13 Dec 2007 11:37:26 GMT
   12 TxHeader     c X-Varnish: 1188471894 1188471893
   12 TxHeader     c Age: 43
   12 TxHeader     c Via: 1.1 varnish
   12 TxHeader     c Connection: keep-alive

The strange thing is that the host is different in PURGE Match and GET Match. I have used the same host on both requests. Does it have anything to do with the vcl code where Im changing the hostheader?

/ Erik




More information about the varnish-misc mailing list