nginx 生成 缩略图 and 生成缩略图到硬盘
nginx 编译的时候增加 ./configure --with-http_image_filter_module
配置如下
server
{
listen 80;
server_name 192.168.0.156;
index index.html index.htm index.php;
root /opt/htdocs;
access_log /opt/local/nginx/logs/access.log main;
location ~* (.*)/(\d+)\.(jpg|png|gif)$
{
set $h $arg_h;
set $w $arg_w;
#image_filter crop $h $w;
image_filter resize $h $w;
}
location ~* /(\d+)_(\d+)x(\d+)\.(jpg|png|gif)$
{
if ( -e $document_root/$1.$4 )
{
rewrite /(\d+)_(\d+)x(\d+)\.(jpg|png|gif)$ /$1.$4?h=$2&w=$3 last;
}
return 404;
}
}
缩略图使用.. 图片保存在 /opt/htdocs/upload/ 目录下面.. 如 0.jpg
原图访问 http://192.168.0.156/upload/0.jpg
缩略100x100 访问 http://192.168.0.156/upload/0_100x100.jpg
缩略300x300 访问 http://192.168.0.156/upload/0_300x300.jpg
如果原图不存在 将会返回 404 !!
生成缩略图到本地硬盘中
server
{
listen 80;
server_name 192.168.0.156;
index index.html index.htm index.php;
root /opt/htdocs;
access_log /opt/local/nginx/logs/www.xxx.com.log main;
location ~* ^/resize
{
set $width 100;
set $height 100;
set $dimens "";
if ($uri ~* "^/resize_(\d+)x(\d+)/(.*)" )
{
set $width $1;
set $height $2;
set $image_path $3;
set $demins "_$1x$2";
}
if ($uri ~* "^/resize/(.*)" )
{
set $image_path $1;
}
set $image_uri image_resize/$image_path?width=$width&height=$height;
if (!-f $request_filename) {
proxy_pass http://192.168.0.156/$image_uri;
break;
}
proxy_store /opt/htdocs/upload/resize$demins/$image_path;
proxy_store_access user:rw group:rw all:r;
proxy_set_header Host $host;
expires 30d;
access_log off;
}
location /image_resize {
alias /opt/htdocs/;
image_filter resize $arg_width $arg_height;
image_filter_jpeg_quality 75;
access_log off;
}
}
缩略图使用.. 图片保存在 /opt/htdocs/upload/ 目录下面.. 如 0.jpg
原图访问 http://192.168.0.156/upload/0.jpg
访问 http://192.168.0.56/resize/upload/0.jpg
location ~* ^/resize
{
set $width 100;
set $height 100;
set $dimens "";
缩略为定义的 100 x 100
当缩略图存在时间
访问 http://192.168.0.156/resize_100x100/upload/0.jpg
if ($uri ~* "^/resize_(\d+)x(\d+)/(.*)" )
{
set $width $1;
set $height $2;
set $image_path $3;
set $demins "_$1x$2";
}
if ($uri ~* "^/resize/(.*)" )
{
set $image_path $1;
}
缩略为 resize_$width x $height 缩略定义大小
当缩略图不存在时,使用直接缩略 图片质量为 75%
set $image_uri image_resize/$image_path?width=$width&height=$height;
location /image_resize {
alias /opt/htdocs/;
image_filter resize $arg_width $arg_height;
image_filter_jpeg_quality 75;
access_log off;
访问 http://192.168.0.156/image_resize/upload/0.jpg?width=100&height=100
并利用 Nginx proxy_store 缓存缩略的图片到本地
if (!-f $request_filename) {
proxy_pass http://192.168.0.156/$image_uri;
break;
}
proxy_store /opt/htdocs/upload/resize$demins/$image_path;
proxy_store_access user:rw group:rw all:r;
proxy_set_header Host $host;
expires 30d;
access_log off;
}
访问 http://192.168.0.156/resize_100x100/upload/0.jpg
生成图片的路径为 /opt/htdocs/upload/resize_100x100/upload/0.jpg
nginx 生成 缩略图 and 生成缩略图到硬盘的更多相关文章
- nginx实现本地图片生成缩略图
nginx可以实现图片的缩略图效果,很多网站为了前端静态资源相应的性能会给大图自动生成一个小图,比如我们经常会在网上看到bd_64x64.png这种格式,淘宝上的小图经常会看到xxx.jpg_100x ...
- 转: nginx使用image_filter生成缩略图 -- fasdfs海量图片缩略图整合
转: nginx使用image_filter生成缩略图 -- fasdfs海量图片缩略图整合 http://blog.csdn.net/CleverCode/article/details/522 ...
- 如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放
如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放 参考网站:nginx-lua-fas ...
- 帝国cms教程:帝国cms在列表页使用sys_ResizeImg函数自动生成不同大小的缩略图
先说说 ecms7.0的sys_ResizeImg这个函数 下面是在列表页使用方法 在右侧把使用程序代码打勾! 如下图: 例如你原先的列表页循环内容代码为: <li><img src ...
- Docker 实战(二)——centos7镜像安装nginx,将安装nginx的centos容器生成新的镜像,并导出
Docker centos7镜像安装nginx 1.安装docker 使用yum安装docker不再重复:见 Linux常用命令 2.pull centos 1)在docker仓库中搜索centos ...
- nginx负载均衡、nginx ssl原理及生成密钥对、nginx配制ssl
1.nginx负载均衡 新建一个文件:vim /usr/local/nginx/conf/vhost/load.conf写入: upstream abc_com{ip_hash;server 61.1 ...
- Nginx之 Location 的生成
1. Location 的生成 location 的生成大致有三种: 由 location 指令直接生成 命令 location:仅用于 server 内部跳转,如 rewrite 就是命名 loca ...
- 代码文档生成工具-Doxygen生成CHM和RTF图文教程
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,可以从一套归档源文件开始,生成chm格式的文档.本文主要讲解如何在winddows下安装doxygen. 1.下载do ...
- Django 反向生成 从数据库生成Model
Django 反向生成 从数据库生成Model 使用Django生成Model python manage.py inspectdb或python manage.py inspectdb > m ...
- uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码
项目介绍 二次开发 uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码,修复自带工具画面有动态加载时截图失败问题,优化自带工具截图速度 ,实现类似录制脚本功能 ...
随机推荐
- white-space详解
white-space共有5种属性normal,nowrap,pre,pre-wrap,pre-line 网上的解释多半过于详细冗长,先做个简化处理,以便查询 normal 忽略空白 过长换行 ...
- UITextField和一个UILabel绑定 浅析
转载自:http://fengdeng.github.io/blog/2016/01/22/rxswift-dao-di-%5B%3F%5D-ge-uitextfieldshi-ru-he-he-%5 ...
- 【Python初学】深copy&浅copy
在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用. 1. copy.copy 浅拷贝 只拷贝父对象 ...
- ImageLoader的Jar包加载图片
注意:需要添加权限,若缓存图片第二个必须要加 <uses-permission android:name="android.permission.INTERNET" /> ...
- Lucene中的合并因子mergeFactor
mergeFactor 是用来决定segment该如何被addDocument()方法进行合并的. 当mergeFactor取比较小的值时,索引时所使用的内存较少 而且搜素未优化的速度会比较快.因此, ...
- POJ 2635 The Embarrassed Cryptographer(大数求余)
题意:给出一个大数,这个大数由两个素数相乘得到,让我们判断是否其中一个素数比L要小,如果两个都小,输出较小的那个. 分析:大数求余的方法:针对题目中的样例,143 11,我们可以这样算,1 % 11 ...
- elasticsearch高级配置之(二)----线程池设置
elasticsearch 配置 线程池 一个Elasticsearch节点会有多个线程池,但重要的是下面四个: 索引(index):主要是索引数据和删除数据操作(默认是cached类型) 搜索 ...
- haxe 配置
安装所有类库: 命令提示符 haxelib install 类库名 如:haxelib install openfl 配置安卓: 命令提示符 haxelib run openfl setup andr ...
- jquery_api事件(二)
1.hover 一个模仿悬停事件的方法.它为频繁使用的任务提供了一种“保持在其中”的状态. 当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数.当鼠标移出这个元素时,会触发指定的第二个函数.而且 ...
- 转:Loadrunner——Simulate a new user on each iteration设置
最近在与大家的讨论中发现了LoadRunner的很多问题,出于解决问题的出发点,我也就相关自己不理解的问题在Google中搜索了一番,并通过一些实例也去实际操作了一遍,发现很多问题确实并不是那么难解决 ...