Search code examples
varnishvarnish-vcl

Set Varnish headers conditionally based on client.ip


How would I use client.ip as a conditional in setting headers in the fetch section of a Varnish 3.0 VCL? I have some troubleshooting headers that I like to set to solve caching issues, however, I don't want them publicly visible. I'd love to be able to whitelist the headers for my ip address only.

Is there any way to access client.ip in _fetch?


Solution

  • You can best set all troubleshooting headers in you _recv without any conditions and remove them in you vcl deliver. this way you dont need to add the same ip check on every conditional header

    if you want to use an ip range you can use the following code

    acl debug {
    "your ip adress1";
    "you ip adress 2";
    }
    

    in you vcl_recv

    if (!client.ip ~ debug) {
    set req.http.x-debug = "debug";
    }
    

    in you vcl_deliver

    if(!req.htt.x-debug){
    remove resp.http.debugheader1;
    remove resp.http.debugheader2;
    }