返回顶部

收藏

nginx根据不同的UserAgent来做缓存的配置策略

更多

outofmemory.cn使用了nginx缓存,因为要为手机做适配,所以nginx需要对同一个页面比如首页http://outofmemory.cn/需要根据当前访问用户使用的浏览器是PC机浏览器还是手机浏览器来做不同的缓存。

nginx的缓存足够灵活,只要适当的配置就可以做到这一点,首先需要在nginx配置文件的http配置范围内添加如下配置:

map $http_user_agent $device_type {
    default 'pc';
    ~(iPhone|Android|IEMobile|Balckberry) 'mobile';
}

上面的配置是根据当前请求的user-agent来设置变量$device_type的值,我们的策略很简单,如果匹配了(iPhone|Android|IEMobile|Balckberry) 就认为是手机浏览器,默认是pc。

有了这个变量,还需要把这个变量放到nginx缓存的键中,如下配置nginx缓存键的部分配置:

  #fast cgi cache def
  fastcgi_cache_path  /data0/nginx-1.2.6/cache levels=1:2 keys_zone=nginx_webpy_cache:30m inactive=1d;

  fastcgi_temp_path /data0/nginx-1.2.6/cache/temp;

  fastcgi_cache_key "$scheme$request_method$host/$device_type$request_uri$is_args$args";
  #end

请注意fastcgi_cache_key配置中有/$device_type这里是把上面提到的$device_type变量放到了缓存键中,这样就可以保证nginx对于手机或者pc上的User-agent来使用不同的缓存了。

nginx的相关配置就是这样子了,需要注意,如果你的应用还需要根据需求来purge缓存的话,需要purge两份缓存,purge缓存时,也要在url的path的最前面添加/pc或者/mobile.

标签:nginx,缓存,fastcgi-cache,配置

收藏

0人收藏

支持

1

反对

0