varnish でredirectする
- https://www.varnish-cache.org/trac/wiki/RedirectsAndRewrites
- http://d.hatena.ne.jp/hogem/20100731/1280509514
Varnish does not have any built in support for HTTP redirections so redirection in Varnish can only be accomplished using something of a dirty hack. You trigger an specified error and then pick this error code up in the vcl_error subroutine. See this example for details.
ということでredirect機能がbuildinされていないので、小技で対応しないといけない?
いったん独自な(この例では750) statusに飛ばして、vcl_error 内でstatusを判別して locationを設定する。
sub vcl_recv { if (req.http.user-agent ~ "iP(hone|od)") { error 750 "Moved Temporarily"; } } sub vcl_error { if (obj.status == 750) { set obj.http.Location = "http://www.example.com/iphoneversion/"; set obj.status = 302; return(deliver); } }
というわけで2箇所設定しないといけないし面倒なので、backendサーバ側で設定したほうが楽かな。