Nginx设置proxy_cache缓存

Nginx原先是没有proxy_cache功能的,貌似从0.8.x版本以后就加入了这个类似Squid缓存的功能,proxy_cache是吧URL当作Key,用md5编码哈希后保存在磁盘上,支持任意的URL,也支持非200状态码,如404/302等。这个功能已经可以取代Squid,特别是性能上,Nginx对多核CPU的利用就比Squid强很多。

nginx.conf里的http块加入以下代码

# proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
proxy_temp_path   /tmp/proxy_temp_dir;
# 设置名称为nginx_cache,内存缓存空间大小为500MB,30天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
proxy_cache_path  /tmp/proxy_cache_dir  levels=1:2   keys_zone=nginx_cache:200m inactive=3d max_size=30g;

server加入以下代码

location / {
  proxy_cache nginx_cache;
  proxy_cache_key $host$uri$is_args$args;
  proxy_set_header Host  $host;
  proxy_set_header X-Forwarded-For  $remote_addr;
  expires  30d;
}

重启Ngnix

/usr/local/nginx/sbin/nginx -s reload

OK,随便运行几个网页,然后到/tmp/proxy_temp_dir/tmp/prox_cache_dir下看看有没有产生缓存文件?如果产生一些目录,恭喜配置成功。

以上之说到把内容缓存给,但没有说到清空缓存,目前清空还只能借助第三方插件然后手动清除,当然也可以写计划任务,干感觉不太方便,这里就不细说了。

分享

TITLE: Nginx设置proxy_cache缓存

LINK: https://www.qttc.net/139-nginx-proxy-cache.html

NOTE: 原创内容,转载请注明出自琼台博客