使用Nginx中自帶的模塊配置縮略圖功能的教程
http_image_filter_module是nginx提供的集成圖片處理模塊,支持nginx-0.7.54以后的版本,在網(wǎng)站訪問(wèn)量不是很高磁盤(pán)有限不想生成多余的圖片文件的前提下可,就可以用它實(shí)時(shí)縮放圖片,旋轉(zhuǎn)圖片,驗(yàn)證圖片有效性以及獲取圖片寬高以及圖片類型信息,由于是即時(shí)計(jì)算的結(jié)果,所以網(wǎng)站訪問(wèn)量大的話,不建議使用。
安裝
安裝還是很簡(jiǎn)單的,默認(rèn)HttpImageFilterModule模塊是不會(huì)編譯進(jìn)nginx的,所以要在configure時(shí)候指定
./configure arguments: --prefix=/usr/local/nginx --with-http_image_filter_module
PS: HttpImageFilterModule模塊需要依賴gd-devel的支持,可以使用yum或apt-get方便地安裝,如果未安裝回報(bào)“/configure: error: the HTTP image filter module requires the GD library.”錯(cuò)誤
yum install gd-devel
apt-get install libgd2-xpm libgd2-xpm-dev
make&&make install后就可以進(jìn)行配置了,做最簡(jiǎn)單的配置,先讓模塊可以跑起來(lái)^^
location ~ /simg/.*\.jpg$ {
#proxy_pass http://10.11.11.11;
#rewrite "/simg/(.*\.jpg)$" /img/$1 break ;
image_filter resize 100 100;
error_page 415 = /empty;
}
該模塊主要有兩個(gè)指令:
指令1:
語(yǔ)法: image_filter (test | size | resize width height | crop width height)
默認(rèn)是: 無(wú)
可出現(xiàn)的上下文: location
該指令指定圖像的轉(zhuǎn)化形式:
(1)test - 測(cè)試回復(fù)是否是JPEG、GIF、或PNG圖片(不支持BMP等其他格式),出錯(cuò)時(shí)返回415。
(2)size - 返回圖片的JSON數(shù)據(jù),比如:( "Img": ( "width": 100, "height": 100, "type": "gif"))
(3)resize - 根據(jù)設(shè)置按比例得減小圖像,比如100*100的圖片,而設(shè)置是50*25,減小后的圖片為25*25。如果你只想設(shè)置一個(gè)維度,可以用“-”代替。出錯(cuò)時(shí)返回415。
(4)crop - 根據(jù)設(shè)置按比例得減小圖像,然后裁剪成跟設(shè)置一樣大小的圖片。比如100*100的圖片,而設(shè)置是50*25,減小后的圖片為50*50,Nginx會(huì)選取中間高度25的像素,形成50*25的圖片,所以圖片會(huì)有缺失。如果你只想設(shè)置一個(gè)維度,可以用“-”代替。出錯(cuò)時(shí)返回415。
指令2:
語(yǔ)法: image_filter_buffer size
默認(rèn)值: image_filter_buffer 1M
可出現(xiàn)的位置: http, server, location
該指令設(shè)置單圖片緩存的最大值,如果過(guò)濾的圖片大小超過(guò)緩存大小,會(huì)報(bào)錯(cuò)返回415。
用法
現(xiàn)在開(kāi)始是重點(diǎn):
有了如上認(rèn)識(shí)再配合locaiont、if、image_filter 就可以讓nginx動(dòng)態(tài)生成縮略圖了。
假設(shè)你的圖片位于/img目錄下
訪問(wèn)縮略圖方式
http://www.xxx.cn/img/9GUMJR7200AJ0003_90x90.jpg
訪問(wèn)原圖方式
http://www.xxx.cn/img/9GUMJR7200AJ0003_90x0.jpg http://www.xxx.cn/img/9GUMJR7200AJ0003_0x50.jpg http://www.xxx.cn/img/9GUMJR7200AJ0003_0x0.jpg http://www.xxx.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,要裁剪的圖片超過(guò)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 {
}
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,要裁剪的圖片超過(guò)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 {
}
相關(guān)文章
Ubuntu?22.04.1?LTS?編譯安裝?nginx-1.22.1的配置過(guò)程
Ubuntu安裝Nginx有兩種方式,一種是通過(guò)命令的方式,這種方式安裝的Nginx版本低,之前漏掃掃出來(lái)Nginx版本低,需要升級(jí)所以現(xiàn)在用編譯的方式安裝版本高點(diǎn)的,本文介紹Ubuntu22.04.1?LTS編譯安裝nginx1.22.1的配置過(guò)程,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2024-01-01
Nginx上對(duì)同一IP訪問(wèn)的特定URL進(jìn)行限流實(shí)現(xiàn)
要在Nginx上對(duì)同一IP訪問(wèn)的特定URL進(jìn)行限流,您可以使用ngx_http_limit_req_module模塊,本文就來(lái)介紹一下如何使用,具有一定的參考價(jià)值,感興趣的餓2024-01-01
解決使用了nginx獲取IP地址都是127.0.0.1 的問(wèn)題
這篇文章主要介紹了解決使用了nginx獲取IP地址都是127.0.0.1 的問(wèn)題,獲取i工具的完整代碼文中給大家提到,具體實(shí)例代碼跟隨小編一起看看吧2021-09-09
Windows設(shè)置nginx開(kāi)機(jī)自啟動(dòng)的方法
這篇文章主要介紹了Windows設(shè)置nginx開(kāi)機(jī)自啟動(dòng)的方法,通過(guò)兩種方式實(shí)現(xiàn)nginx的開(kāi)機(jī)自啟動(dòng):winws和window計(jì)劃程序,每種方式給大家介紹的非常詳細(xì)需要的朋友可以參考下2022-11-11
nginx反向代理proxy_pass遇到的死循環(huán)問(wèn)題
這篇文章主要介紹了nginx反向代理proxy_pass遇到的死循環(huán)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Nginx與Lua灰度發(fā)布的實(shí)現(xiàn)
這篇文章主要介紹了Nginx與Lua灰度發(fā)布的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Nginx各個(gè)模塊的配置及常用配置選項(xiàng)
本文總結(jié)了Nginx常用配置選項(xiàng),包括url匹配優(yōu)先級(jí)、請(qǐng)求轉(zhuǎn)發(fā)、日志配置、超時(shí)配置、靜態(tài)文件處理以及負(fù)載均衡的各項(xiàng)算法,對(duì)Nginx?模塊配置相關(guān)知識(shí)感興趣的朋友一起看看吧2022-01-01
Nginx服務(wù)器作反向代理時(shí)的緩存配置要點(diǎn)解析
這篇文章主要介紹了Nginx服務(wù)器作反向代理時(shí)的緩存配置要點(diǎn)解析,需要的朋友可以參考下2016-04-04
docker nginx實(shí)現(xiàn)一個(gè)主機(jī)部署多個(gè)站點(diǎn)操作
這篇文章主要介紹了docker nginx實(shí)現(xiàn)一個(gè)主機(jī)部署多個(gè)站點(diǎn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11

