http - Can Varnish be configured to try a second server for some resource if it gets a 404 from the primary server? -


this perfect solution me need serve generated content web browsers. plan generate content on demand , store next time. don't want browsers call service (which generates content) every time. want them go directly "cached" resource if it's available , call service if it's not. i'd put varinsh in front of server runs service , server b stores generated content versions. if gets request resource hasn't got cached it'll try server b. upon getting 404 response it'll request same resource server a.

can varnish configured in such way vcl? if not there solution know about?

p.s. don't want send 302 redirects browser plus don't have control on server b make send such redirects instead of 404's

this possible in varnish. make sure in vcl_fetch (and possibly in vcl_error) check return status code (e.g. check status > 400), restart if failed, , in vcl_recv select other backend if req.restarts > 0. example:

backend servera {    .host="192.168.0.1";    .port = "80"; }  backend serverb {    .host = "192.168.0.2";    .port = "80"; }  sub vcl_recv {    if (req.restarts == 0) {        set req.backend = serverb;    } else {        set req.backend = servera;    } }  sub vcl_fetch {     if (obj.status >= 400 && req.restarts == 0) {         restart;     } }  sub vcl_error {    if (req.restarts == 0) {        restart;    } } 

but being said, sounds you're reinventing concept of cache server. , varnish great cache server. why not have 1 back-end server (servera) , have varnish cache generated entities? can setup complex rules , you'll expiration (of cache), purge management , performance free! :)


Comments

Popular posts from this blog

asp.net - repeatedly call AddImageUrl(url) to assemble pdf document -

java - Android recognize cell phone with keyboard or not? -

iphone - How would you achieve a LED Scrolling effect? -