Nginx缩略图和Fastdfs整合以及image_filter配置,7点经验结论和5个参考资料
以下是7点经验结论和5个参考资料
1.Nginx单独配置缩略图与Nginx和Fastdfs模块整合,配置是不一样的。
非整合模式的配置,类似这样的:
location ~* /(\d+)\.(jpg)$ {
set $h $arg_h; # 获取参数h的值
set $w $arg_w; # 获取参数w的值
#image_filter crop $h $w;
image_filter resize $h $w; # 根据给定的长宽生成缩略图
}
location ~* /(\d+)_(\d+)x(\d+)\.(jpg)$ {
if ( -e $document_root/$1.$4 ) { # 判断原图是否存在
rewrite /(\d+)_(\d+)x(\d+)\.(jpg)$ /$1.$4?h=$2&w=$3 last;
}
return 404;
}
整合模式的配置,类似这样的:
location ~ group1/M00/(.+)\.?(.+){
alias /home/fastdata/data;
ngx_fastdfs_module;
}
Fastdfs的URL比较特殊,group1/M00,自己的实践体会是,不能随便改名字。
2.缩略图的配置其实很简单,难在缩略图和非缩略图共存。
location ~ group1/M00/(.+)\.?(.+){
alias /home/fastdata/data;
ngx_fastdfs_module;
image_filter resize 10 10;
}
3.亲自实践的不可行的方案,或者说最终搞不定的方案。
访问原图的URL
http://ip/a.img
访问缩略图的URL
http://ip/a.img?w=10&h=10
数据库存的是“a.img”,我希望如果想要获得缩略图,直接在后面增加url参数,w和h。
因此,我尝试的Nginx配置:
location ~ /group1/a/M00(.*).jpg {
49 root /home/fdfsdata/data;
50 ngx_fastdfs_module;
60 if ($w != ""){
61 # rewrite /group1/M00 /image/resize$request_uri;
62 }
63 }
64
69
91 location ~ /image/resize/group1/M00 {
92 #set $h 100;
93 #set $w $arg_w;
94 #rewrite ^/image/resize http://baidu.com?$request_uri-$document_uri-$query_string-$uri;
95 # rewrite /image/resize/group1/M00 http://baidu.com?request_uri=$request_uri;
96 root /home/fdfsdata/data;
97 ngx_fastdfs_module;
98 #image_filter test;
99 #image_filter size;
100 # image_filter off;
101 image_filter resize 100 100;
102 }
以上只代表了思路,不是“原貌”。
大致的意思,就是
a.拦截图片,如果宽度w不为空,就rewrite重定向到“/image/resize/group1/M00”,
让第2个配置,执行 image_filter resize 100 100,获得缩略图。
b.如果w为空,直接获得原图。
总是报400,415之类的错误。
最初为了获得,重定向的url,试了很多方法。
rewrite /group1/M00 /image/resize$request_uri;
最后探索出,上述方式是比较好的。
但是,最后发现Fastdfs的路径,不能随便改,修改了,容易出现400、404,或415.
为了探索url中的一些参数,比如$1,$request_uri等,网上看了一些资料,知道了大致的意思。
在参考别人的之前,我想到了一种方法,
rewrite ^/image/resize http://baidu.com?$request_uri-$document_uri-$query_string-$uri;
重定向到一个明确的页面,比如百度的首页,把参数放到?之后,然后在浏览器的地址栏就可以看到了。
尝试使用了echo命令,Nginx不可识别。
网上找到了,Nginx有echo模块,大概是说,安装了echo模块,方便在Nginx用echo输出变量,方便调试。
4.if ($w != "")。
Nginx的if语句,左右貌似需要空格~
坑~
5.nginx之location配置
http://blog.csdn.net/hellochenlian/article/details/44655547
值得好好学习下
没有系统学习Nginx,感觉很多时候,比较吃亏。
我打算2016年认真学习Nginx,买本好书,系统地学习下。
一点点地学,很累,记不住~
6.其实,不一定要非要用Nginx的image_filter模块实现缩略图。
也可以用程序控制,比如上传图片的时候,实时生成多种尺寸的图片,存到Fastdfs。
优点和缺点,还是经典的“时间”和“空间”问题。
7.最终可行Nginx配置
location ~ /group1/M00/(.*)_([0-9]+)x([0-9]+)\.jpg{
71 root /home/fdfsdata/data;
72 ngx_fastdfs_module;
73 set $w $2;
74 set $h $3;
75 # if ($h != "0") {
76 # rewrite /group1/M00/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /group1/M00/$1.$4 last;
77 # rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ group1/M00$1.$4 break;
78 # }
79 if ($w != "0") {
80 rewrite /group1/M00/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /group1/M00/$1.$4 break;
81 }
82 image_filter resize $w $h;
83 image_filter_buffer 2M;
84 }
85
86 location ~ group1/M00/(.+)\.?(.+){
87 alias /home/fastdata/data;
88 ngx_fastdfs_module;
89 }
需要注意,用的小写的“x”。
访问举例:
获得原图
http://42.96.184.84:8080/group1/M00/00/00/KmC4VFY7GsiATWTJAAA3vrrOOWM943.jpg
缩略图1
http://42.96.184.84:8080/group1/M00/00/00/KmC4VFY7GsiATWTJAAA3vrrOOWM943_100x30.jpg
缩略图2
http://42.96.184.84:8080/group1/M00/00/00/KmC4VFY7GsiATWTJAAA3vrrOOWM943_150x50.jpg
没有搞成功的,最初尝试的方案
http://42.96.184.84:8080/group1/M00/00/00/KmC4VFY7GsiATWTJAAA3vrrOOWM943.jpg?w=10&h=10
数据库存的URL:group1/M00/00/00/KmC4VFY7GsiATWTJAAA3vrrOOWM943.jpg
如果要按照KmC4VFY7GsiATWTJAAA3vrrOOWM943_150x50.jpg展示,需要获得文件名,修改,加上指定的宽度和高度
_150x50.
8.参考资料
FastDFS组合nginx的http_image_filter_module建立的图片服务器(最关键,可行方法,在帖子的最后面)
http://bbs.chinaunix.net/thread-4058548-1-1.html
nginx生成缩略图配置 – ttlsa教程系列之nginx(参考)
http://www.ttlsa.com/nginx/nginx-modules-image_filter_module/
Nginx国人开发缩略图模块(ngx_image_thumb)(参考,和上面的类似)
http://www.ttlsa.com/nginx/nginx-modules-ngx_image_thumb/
Nginx图片剪裁模块探究 http_image_filter_module
http://cwtea.blog.51cto.com/4500217/1333142
nginx之location配置
http://blog.csdn.net/hellochenlian/article/details/44655547
Nginx缩略图和Fastdfs整合以及image_filter配置,7点经验结论和5个参考资料的更多相关文章
- FastDFS整合nginx后,nginx一直报错
FastDFS整合nginx后,nginx一直报错: 报错内容: [2018-06-11 09:41:21] ERROR - file: ../common/fdfs_http_shared.c, l ...
- FastDFS整合Nginx
浏览器访问FastDFS存储的图片需要通过Nginx访问 需要安装fastdfs-nginx-module.Nginx 安装fastdfs-nginx-module模块 (1)将fastdfs-ngi ...
- 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署
少啰嗦,直接装 看过上一篇分布式文件系统 - FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上 ...
- FastDFS 集群 安装 配置
这篇文章介绍如何搭建FastDFS 集群 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的 ...
- nginx于tomcat项目整合(拆分静态文件)
1.在很多时候我们在网站上应用的时候都会用到nginx,由于我们是java开发者,不可避免的是我们需要在我们的tomcat的工程中应用到nginx,这里的应用可以是请求转发,负载均衡,反向代理,配置虚 ...
- Nginx + Tomcat Windows下的负载均衡配置
Nginx + Tomcat Windows下的负载均衡配置 一.为什么需要对Tomcat服务器做负载均衡? Tomcat服务器作为一个Web服务器,其并发数在300-500之间,如果超过50 ...
- nginx下目录浏览及其验证功能配置记录
工作中常常有写不能有网页下载东西的需求,在Apache下搭建完成后直接导入文件即可达到下载/显示文件的效果;而Nginx的目录列表功能默认是关闭的,如果需要打开Nginx的目录列表功能,需要手动配置, ...
- Flask+Nginx+uWSGI在Ubuntu服务器上的配置
Flask+Nginx+uWSGI在Ubuntu服务器上的配置 Step1 安装系统环境 Ubuntu服务器选择是阿里云的ECS服务,ECS提供单独的内存\CPU\带宽\存储规格可以选择,并且提供合适 ...
- nginx 反向代理 与 Apache backend的配置联合配置
nginx 反向代理 与 Apache backend的配置联合配置: 说明: nginx 将http映射到Apache上的特定子目录. 配置方法步骤: 1. 设置域名, 子域名映射到指定服务器ip ...
随机推荐
- STL_算法_Heap算法(堆排)(精)
C++ Primer 学习中. . . 简单记录下我的学习过程 (代码为主) /***************************************** STL-算法--Heap算法 堆排序 ...
- POJ 2739 Sum of Consecutive Prime Numbers(素数)
POJ 2739 Sum of Consecutive Prime Numbers(素数) http://poj.org/problem? id=2739 题意: 给你一个10000以内的自然数X.然 ...
- Android ListView动画实现方法
在Android中listview是最经常使用的控件之中的一个,可是有时候我们会认为千篇一律的listview看起来过于单调,于是就产生了listView动画,listview载入了动画会让用户体验更 ...
- 集群环境下,Session管理的几种手段
集群环境下,Session管理的几种手段 1.Session复制 缺点:集群服务器间需要大量的通信进行Session复制,占用服务器和网络的大量资源. 由于所有用户的Session信息在每台服务器上都 ...
- 【转】webshell检测——使用auditd进行system调用审计
本文档将介绍:如何通过Linux审计系统auditd监测WebShell执行系统命令的行为. 测试环境:CentOS7.0_x64 auditd简介 Linux审计系统提供了一种跟踪系统上与安全相关的 ...
- 【DNN 系列】 添加模块后不显示
添加模块后不显示分为几个原因 1.检查.dnn文件是否填写正确,要和对应的页面文件对应上 我有一步是这这个名称地方我填上了 就不显示了.这里需要注意,VIEW 的名城是不需要写的 2.重写文件 实体操 ...
- Linux企业运维人员最常用150个命令汇
近来老男孩发现新手学习Linux记不住命令,不会分类.不会筛选重点,胡子眉毛一把抓当然记不住了. 特别整理Linux运维最常用150个命令和大家分享,大家学习命令不用在盲目了,根据分类,然后逐步学习! ...
- 24 款必备的 Linux 桌面应用(2016 版)
作者: Munif Tanjim 译者: LCTT GHLandy | 2016-12-21 08:41 评论: 41 收藏: 13 摘要:Linux 的必备软件有哪些?这将会是一个非常主观的回答 ...
- 在windows下如何新建爬虫虚拟环境和进行scrapy安装
Scrapy是Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改.Sc ...
- ResNet(深度残差网络)
注:平原改为简单堆叠网络 一般x是恒等映射,当x与fx尺寸不同的时候,w作用就是将x变成和fx尺寸相同. 过程: 先用w将x进行恒等映射.扩维映射或者降维映射d得到wx.(没有参数,不需要优化器训练) ...