使用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;
          }