nginx生成縮略圖配置 – ttlsa教程系列之nginx

爲了手機端瀏覽到與手機分辨率相匹配的圖片,提升app訪問速度以及減小用戶的手機流量,須要將圖片生成縮略圖,這邊共有如下解決方案。
A.    發佈新聞生成多重縮略圖 – 沒法匹配到各類尺寸圖片
B.    當相應縮略圖不存在,則使用php或者java等程序生成相應縮略圖 – 須要程序員協助
C.    使用nginx自帶模塊生成縮略圖 – 運維便可完成
D.    使用nginx+lua生成縮略圖php

通過多方的考慮,決定使用方案C,使用nginx自帶模塊生成縮略圖,模塊:--with-http_image_filter_module.
以下是個人安裝參數:html

./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
一、    首先判斷是否存在原圖123.jpg,不存在直接返回404(若是原圖都不存在,還生成縮略圖幹啥,對吧)
二、    跳轉到http://tset.ttlsa.com/123.jpg?h=100&w=10,將參數高h和寬10帶到url中。
三、    Image_filter resize指令根據h和w參數生成相應縮略圖。
備註:長寬取小,例如原圖是100*10,你傳入的是10*2,那麼他會給你生成10*1的圖片.java

生成縮略圖只是image_filter功能中的一個,它一共支持4種參數:
test:返回是否真的是圖片
size:返回圖片長短尺寸,返回json格式數據
corp:截取圖片的一部分,從左上角開始截取,尺寸寫小了,圖片會被剪切
resize:縮放圖片,等比例縮放nginx

nginx生成縮略圖優缺點
優勢:
一、    根據傳入參數便可生成各類比例圖片
二、    不佔用任何硬盤空間程序員

缺點:
一、消耗CPU,訪問量大將會給服務器帶來極大的負擔.json

幾點建議:
一、    生成縮略是個消耗cpu的操做,若是訪問量比較大的站點,最好考慮使用程序生成縮略圖到硬盤上,或者在前端加上cache或者使用CDN。服務器

轉載請註明出處:http://www.ttlsa.com/html/1612.htmlapp

相關文章
相關標籤/搜索