首页 > 网站 > Nginx > 正文

Nginx服务器上搭建图片缓存服务的基本配置解析

2024-08-30 12:26:06
字体:
来源:转载
供稿:网友

最近准备用nginx搭建了一个图片服务器,看中的就是nginx超强的静态文件处理能力。

由于图片量比较大,和web服务器(也是nginx)分开运行,虽然web服务器调用图片没用问题,但毕竟是远程调用,肯定没有本地文件系统那么快,因此仍然有优化的空间。

proxy_store
使用前的nginx配置

location ~* ^.+/.(js|ico|gif|jpg|jpeg|png|html|htm)$ {  log_not_found off;  access_log off;  expires 7d;}

接下来就用到了nginx的proxy_store模块,让nginx 将取得的图片缓存在本地一个目录,下次就直接调用,(这让网页热点图片统计变得非常容易,讨厌日志分析的管理员肯定喜欢)

location ~ .*/.(gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ {      log_not_found off;      expires 7d ;      access_log off;      proxy_store on;      proxy_store_access user:rw group:rw all:rw;      if ( !-e $request_filename) {      proxy_pass http://img.example.com      }}

默认的缓存路径位于 /var/cache/nginx/proxy_temp,里面将会保持图片服务器的目录结构

proxy_store 没有缓存过期,相当于镜像功能,这既是优点也是缺点,优点是访问快速,缺点是不知哪一天,硬盘会被撑爆,不过我们可以写个find脚本,定时清理一下缓存就OK了。

nginx还有一种缓存proxy_cache,它在设计上比proxy_store 更先进,采用内存+硬盘方式缓存,可以设置缓存大小和缓存过期。

proxy_cache
proxy_cache有一个问题就是,proxy_cache不能清除指定的URL缓存,只能设置URL过期时间,但是有问题,有人就会很快解决问题,nginx第三方模块ngx_cache_purge能清除指定URL。
 
  nginx安装时需要将ngx_cache_purege加载进去。

./configure --user=www --group=www --add-module=/root/dxm/nginx/ngx_cache_purge-1.2  

 
其中,/root/dxm/nginx/ngx_cache_purge-1.2为ngx_cache_purge解压路径(附件中提供ngx_cache_purge tar包下载)
 
现在来一段实例,实现图片缓存:
   话说proxy_tem_path,与proxy_cache_path必须在同一个分区之下!
 

proxy_temp_path /usr/local/nginx/proxy_temp; proxy_cache_path /usr/local/nginx/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=1g; upstream tomcat_server{   server 127.0.0.1:8080;    }         server{   listen 192.168.154.128;   server_name www.wolf.com;      location ~ .*/.(gif|jpg|jpeg|png|bmp|swf)$   {              proxy_cache cache_one;       proxy_cache_methods GET HEAD POST;         proxy_cache_min_uses 1;        proxy_cache_valid 200 302 10m;        proxy_cache_valid 404 1m;       proxy_cache_valid any 1m;        proxy_cache_key "$host:$server_port$uri$is_args$args";       proxy_redirect off;      proxy_set_header Host $host;      proxy_set_header X-Real-IP $remote_addr;      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;      proxy_pass http://tomcat_server;          }       location ~ .*/.(jsp)$ {             proxy_redirect off;      proxy_set_header Host $host;      proxy_set_header X-Real-IP $remote_addr;      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;      proxy_pass http://tomcat_server;    }       location ~ /purge(/.*)   {     allow 192.168.154.128;     allow 192.168.154.1;       deny all;       proxy_cache_purge cache_one $host:$server_port$1$is_args$args;     }              
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表