ngxin实现user-agent 来访问不用页面,非常简单,但是我们一般前端是cache层,那么在缓存层怎么实现的,原理一样的。


今天用varnish实现,注意我们实现的是302   redirect 而不是rewrite url


实现目标:iphone来访问www.test.com 会自动跳转到m.test.com


贴代码

sub vcl_recv {

   if (req.http.user-agent ~ "iphone") {
      if (req.http.host ~ "www.test.com") {
           error 750 "m.test.com";
     } 
   }
}

sub vcl_error {
 if (obj.status == 750) {
    if (obj.response ~ "m.test.com") {
        set obj.http.Location = "http://m.test.com/";
}
    set obj.status = 302;
        return (deliver);
 }
}