文档章节

nginx生成缩略图配置 – ttlsa教程系列之nginx

凯文加内特
 凯文加内特
发布于 2016/04/21 16:07
字数 709
阅读 94
收藏 7

为了手机端浏览到与手机分辨率相匹配的图片,提高app访问速度以及减少用户的手机流量,需要将图片生成缩略图,这边共有以下解决方案。
A.    发布新闻生成多重缩略图 – 无法匹配到各种尺寸图片
B.    当相应缩略图不存在,则使用php或者java等程序生成相应缩略图 – 需要程序员协助
C.    使用nginx自带模块生成缩略图 – 运维即可完成
D.    使用nginx+lua生成缩略图

经过多方的考虑,决定使用方案C,使用nginx自带模块生成缩略图,模块:--with-http_image_filter_module.
如下是我的安装参数:

./configure --prefix=/usr/local/nginx-1.4.1 --with-http_stub_status_module \
--with-http_realip_module --with-http_image_filter_module --with-debug

修改nginx.conf配置文件,或者放到你相应的server块中.

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

例如图片:
http://test.ttlsa.com/123_100x10.jpg
1、    首先判断是否存在原图123.jpg,不存在直接返回404(如果原图都不存在,还生成缩略图干啥,对吧)
2、    跳转到http://tset.ttlsa.com/123.jpg?h=100&w=10,将参数高h和宽10带到url中。
3、    Image_filter resize指令根据h和w参数生成相应缩略图。
备注:长宽取小,例如原图是100*10,你传入的是10*2,那么他会给你生成10*1的图片.

生成缩略图只是image_filter功能中的一个,它一共支持4种参数:
test:返回是否真的是图片
size:返回图片长短尺寸,返回json格式数据
corp:截取图片的一部分,从左上角开始截取,尺寸写小了,图片会被剪切
resize:缩放图片,等比例缩放

nginx生成缩略图优缺点
优点:
1、    根据传入参数即可生成各种比例图片
2、    不占用任何硬盘空间

缺点:
1、消耗CPU,访问量大将会给服务器带来极大的负担.

几点建议:
1、    生成缩略是个消耗cpu的操作,如果访问量比较大的站点,最好考虑使用程序生成缩略图到硬盘上,或者在前端加上cache或者使用CDN。

转载请注明出处:http://www.ttlsa.com/html/1612.html


本文转载自:https://www.ttlsa.com/nginx/nginx-modules-image_filter_module/

共有 人打赏支持
凯文加内特
粉丝 338
博文 686
码字总数 104649
作品 0
青岛
后端工程师
私信 提问
FASTDFS(六)nginx+lua+GraphicsMagick 图片自动缩放

1.安装GraphicsMagick --使用yum安装GraphicsMagick Shell代码 --查看安装结果 Shell代码 --验证安装结果 Shell代码 2.安装lua-nginx-module --下载安装LuaJIT Shell代码 --安装lua-nginx-m...

chaun
2016/09/12
121
0
TTLSA出品原创系列教程列表(zabbix,nginx,mongodb,hinkphp,MySQL

两年的时间内共出品6个系列,其中zabbix与nginx已经制作电子书,其他系列教程陆续转成pdf提供给广大技术宅们下载,感谢大家对运维生存时间的一贯支持,如有不足的地方,欢迎拍砖。系列教程如...

天天顺利
2015/05/26
0
0
nginx实时生成缩略图到硬盘上

现在随着各终端的出现(手机,ipad等平板),以及各种终端的手机分辨率和尺寸都不同,现在手机用户流量都是宝,网上出现了各种各样的生成缩略图功能的架构,有使用php实时生成缩略图的,也有用n...

小运
2013/08/24
0
2
Nginx Image 缩略图

现在随着各终端的出现(手机,ipad等平板),以及各种终端的手机分辨率和尺寸都不同,现在手机用户流量都是宝,网上出现了各种各样的生成缩略图功能的架构,有使用php实时生成缩略图的,也有用n...

张志浩
2013/10/21
0
0
Nginx学习笔记--Nginx图片缩略图,水印处理模块

本nginx模块主要功能是对请求的图片进行缩略/水印处理,支持文字水印和图片水印。 1.环境准备 确认已经安装了libgd2-devel,libpcre-devel,libcurl-devel模块 2.下载nginx的tar.gz文件,并通过...

凯文加内特
2016/04/12
149
0

没有更多内容

加载失败,请刷新页面

加载更多

jdk11 HttpClient 爬虫

目的: 获得目标背单词网站中的单词, 写了一个简单的小爬虫, 使用jdk11 到此, 思路明确! 第一步, 把冰箱门...., 串词了,Sorry!! 第一步, 调用登陆接口, 拿到sessionid! 第二步, 带着sessionid...

GOToo
17分钟前
2
0
matlab-自控原理 taylor 泰勒展开 一、二元函数

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   一元函数的泰勒展开 code c......

志成就
28分钟前
1
0
PreparedStatement批量执行sql

案例: 工具方法: public static Connection getConnection(){try {Class.forName("com.mysql.jdbc.Driver");ct = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/......

ZeroneLove
45分钟前
0
0
【scala】3.数组相关操作

简介 在本章中,我们将会学到如何在scala中操作数组。 1、定长数组 // 初始化长度为10的定长数组,每一个元素的值为0val nums = new Array[Int](10)// nums: Array[Int] = Array(0, 0, 0, ...

Areya
50分钟前
2
0
教你零基础如何快速入门大数据技巧

现在是大数据时代,很多人都想要学习大数据,因为不管是就业前景还是薪资都非常的不错,不少人纷纷从其他行业转型到大数据行业,那么零基础的人也想要学习大数据怎么办呢?下面一起探讨下零基...

董黎明
59分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部