http_image_filter_module是nginx官方提供的圖片處理模塊,支持jpg赖瞒、gif女揭、png格式,但模塊不是默認(rèn)安裝栏饮,需要在編譯安裝的時(shí)候開啟本模塊吧兔。官方模塊地址:image_filter_module
解決應(yīng)用需求
- 生成指定比例/尺寸的圖片;
- 壓縮圖片體積袍嬉,生成圖片的縮略圖境蔼;
- 圖片緩存加速。
解決方案
image_filter_module + proxy_cache伺通,前者實(shí)現(xiàn)圖片處理箍土,后者實(shí)現(xiàn)靜態(tài)內(nèi)容緩存。
1臺(tái)nginx前端(proxy_cache)+n臺(tái)圖片后端處理(http_image_filter_module)
安裝
<pre>
gd庫依賴安裝:yum install gd-devel
模塊安裝:在已有的編譯參數(shù)加上新參數(shù)并重新編譯 --with-http_image_filter_module
</pre>
配置
前端機(jī)(反向代理機(jī))nginx(proxy_cache)配置
- 創(chuàng)建緩存目錄
<pre>
chown –R nobody/data/ nginx_temp /data/nginx_cache
</pre> - 在原配置上新增
<pre>
http {
…
proxy_temp_path /data/nginx_temp;
proxy_cache_path /data/nginx_cache levels=1:2 keys_zone=dCache:200minactive=10d max_size=3g;
…
}
server {
location / {
…
proxy_cache dCache;
proxy_cache_valid 200 301 302 10d;
proxy_cache_valid 404 500 503 1m;
proxy_cache_key $host$uri$is_args$args;
proxy_pass http://images_filter;
…
}
}
</pre>
后端機(jī)nginx配置
<pre>
裁剪為60*60圖片
location ~/index/w60/ (.+)$ {
proxy_pass http://www.example.com/$2;
image_filter crop 60 60;
image_filter_jpeg_quality 80;
error_page 415 = /empty;
}
裁剪為寬度為300的圖片
location ~/index/w300/ (.+)$ {
proxy_pass http:// www. example.com/$2;
image_filter resize 300 -;
image_filter_jpeg_quality 80;
error_page 415 = /empty;
}
</pre>
配置參數(shù)
off 關(guān)閉
test 測試
size json格式返回圖片信息
rotate 旋轉(zhuǎn)
resize 縮放(如果要等比縮放罐监,則 其中一個(gè)參數(shù)用 – 表示)
crop 裁減(如果要等比裁減吴藻,則 其中一個(gè)參數(shù)用 – 表示)
image_filter_jpeg_quality: jpg圖片質(zhì)量,從1~100
啟動(dòng)
安裝完成后弓柱,將所有的nginx服務(wù)重啟沟堡,則服務(wù)啟動(dòng)完成侧但。
小結(jié)
- 用于等比圖片縮略圖效果較好,根據(jù)熱點(diǎn)圖片的數(shù)量和負(fù)載相應(yīng)調(diào)節(jié)前端機(jī)(proxy_cache)的內(nèi)存緩存和硬盤緩存的空間航罗;
- 改變?cè)壤牟脺p效果不佳(居中裁減)禀横,畢竟圖片的焦點(diǎn)區(qū)域不可預(yù)測;
- 圖片修改后伤哺,緩存圖片不會(huì)同步修改(需另外引入proxy_cache_purge 模塊)燕侠。
總結(jié)者祖,該方案適用于簡單的圖片縮略圖網(wǎng)關(guān)立莉,對(duì)機(jī)器性能要求不高,博主在日均100w pv的應(yīng)用中使用七问,約4核4g服務(wù)器蜓耻,壓力不大;
整理于2014/10