在Nginx中配置image filter模塊來實(shí)現(xiàn)動(dòng)態(tài)生成縮略圖
先來看一下什么是nginx的image filter模塊。
HttpImageFilterModule用來裁剪過大的圖片到指定大小,是nginx自帶模塊,默認(rèn)不會(huì)開啟
開啟HttpImageFilterModule需要在編譯要帶上參數(shù) --with-http_image_filter_module
該模塊主要有兩個(gè)指令:
語法: image_filter (test | size | resize width height | crop width height)
默認(rèn)是: 無
可出現(xiàn)的上下文: location
該指令指定圖像的轉(zhuǎn)化形式:
test - 測(cè)試回復(fù)是否是JPEG、GIF、或PNG圖片(不支持BMP等其他格式),出錯(cuò)時(shí)返回415。
size - 返回圖片的JSON數(shù)據(jù),比如:( "Img": ( "width": 100, "height": 100, "type": "gif"))
resize - 根據(jù)設(shè)置按比例得減小圖像,比如100*100的圖片,而設(shè)置是50*25,減小后的圖片為25*25。如果你只想設(shè)置一個(gè)維度,可以用“-”代替。出錯(cuò)時(shí)返回415。
crop - 根據(jù)設(shè)置按比例得減小圖像,然后裁剪成跟設(shè)置一樣大小的圖片。比如100*100的圖片,而設(shè)置是50*25,減小后的圖片為50*50,Nginx會(huì)選取中間高度25的像素,形成50*25的圖片,所以圖片會(huì)有缺失。如果你只想設(shè)置一個(gè)維度,可以用“-”代替。出錯(cuò)時(shí)返回415。
語法: image_filter_buffer size
默認(rèn)值: image_filter_buffer 1M
可出現(xiàn)的位置: http, server, location
該指令設(shè)置單圖片緩存的最大值,如果過濾的圖片大小超過緩存大小,會(huì)報(bào)錯(cuò)返回415。
現(xiàn)在開始時(shí)重點(diǎn):
有了如上認(rèn)識(shí)再配合locaiont、if、image_filter 就可以讓nginx動(dòng)態(tài)生成縮略圖了。
假設(shè)你的圖片位于/img目錄下
訪問縮略圖方式
http://www.dbjr.com.cn/img/9GUMJR7200AJ0003_90x90.jpg
訪問原圖方式
http://www.dbjr.com.cn/img/9GUMJR7200AJ0003_90x0.jpg
http://www.dbjr.com.cn/img/9GUMJR7200AJ0003_0x50.jpg
http://www.dbjr.com.cn/img/9GUMJR7200AJ0003_0x0.jpg
http://www.dbjr.com.cn/img/9GUMJR7200AJ0003.jpg
添加如下配置到server上下文即可
location ~* /img/(.+)_(d+)x(d+).(jpg|gif|png)$ { set $h $2; set $w $3; if ($h = "0") { rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last; } if ($w = "0") { rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last; } #根據(jù)給定的長(zhǎng)寬生成縮略圖 image_filter resize $h $w; #原圖最大2M,要裁剪的圖片超過2M返回415錯(cuò)誤,需要調(diào)節(jié)參數(shù)image_filter_buffer image_filter_buffer 2M; #error_page 415 /img/notfound.jpg; try_files /img/$1.$4 /img/notfound.jpg; } location ~* /img { }
生成縮略圖只是image_filter功能中的一個(gè),它一共支持4種參數(shù):
test:返回是否真的是圖片
size:返回圖片長(zhǎng)短尺寸
corp:截取圖片的一部分
resize:縮放圖片
location ~ ^/test/(.*)$ { image_filter size; root /var/www/_xxx; index index.html index.htm; }
輸出信息類似:
{ "img" : { "width": 1024, "height": 537, "type": "jpeg" } }
是一個(gè)JSON,壓力測(cè)試了一下,還是很給力,500個(gè)并發(fā),CPU占用在17%左右。
- CentOS下編譯、安裝與配置nginx
- CentOS 7.2 下編譯安裝PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法詳解(mini版本)
- CentOS 7.2.1511 編譯安裝Nginx1.10.1+MySQL5.6.33+PHP5.6.26運(yùn)行環(huán)境
- CentOS 7.2.1511 編譯安裝Nginx1.10.1+MySQL5.7.14+PHP7.0.11
- CentOS 6.6服務(wù)器編譯安裝lnmp(Nginx1.6.2+MySQL5.6.21+PHP5.6.3)
- Centos下編譯安裝Nginx教程詳解
- Nginx配合php實(shí)現(xiàn)生成實(shí)時(shí)縮略圖功能
- Nginx服務(wù)器中用于生成縮略圖的模塊配置教程
- Nginx生成縮略圖并存儲(chǔ)到硬盤上
- CentOS下編譯安裝nginx及配置縮略圖插件的方法教程
相關(guān)文章
使用Nginx實(shí)現(xiàn)灰度發(fā)布的使用
這篇文章主要介紹了使用Nginx實(shí)現(xiàn)灰度發(fā)布的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03filebeat同時(shí)收集錯(cuò)誤日志與普通日志并存詳解
這篇文章主要為大家介紹了filebeat同時(shí)收集錯(cuò)誤日志與普通日志并存詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Nginx中的用戶認(rèn)證配置及阻止用戶使用代理訪問的方法
這篇文章主要介紹了Nginx中的用戶認(rèn)證配置及阻止用戶使用代理訪問的方法,用戶認(rèn)證部分用到了自帶的ngx_http_auth_basic_module模塊,需要的朋友可以參考下2016-01-01