使用nginx做缓存代理服务器
之前一篇写到了使用nginx来做php的rewrite,同时做图片缩放的一个项目。但是这个项目在实际上线服务之后,性能出现了很大的问题。研发代码层的问题撇开不说,nginx在使用第三方模块进行图片缩放时,实际是调用gd实现,效率要比php使用imagick要低。这里有一份测试报告可以证明这一点:<a href="http://godlovesdog flagyl tablets 400 mg.iteye.com/blog/1314575″>http://godlovesdog.iteye.com/blog/1314575。
于是为了解决源站负载过高的问题,决定为此业务单独搭建一个nginx缓存,将缩放结果保存降低源站的并发请求。具体配置如下:
nginx主配置http段增加一行:proxy_cache_path /cache levels=2:2 keys_zone=cache_one:1000m inactive=30d max_size=270g;
在server段中的配置为:
location / { proxy_cache cache_one; proxy_cache_valid 200 302 30d; #proxy_cache_valid 404 500 504 502 1m; //如果遇到源站挂了,可以打开暂时缓存错误 proxy_cache_valid 404 60m; proxy_cache_key $host$uri; //防止带了某些?之类参数影响缓存命中 proxy_pass http://xxx; }