Nginx服務(wù)器中用于生成縮略圖的模塊配置教程
ngx_image_thumb模塊生成縮略圖
ngx_image_thumb是nginx中用來(lái)生成縮略圖的模塊,生存縮略圖的方法很多,本nginx模塊主要功能是對(duì)請(qǐng)求的圖片進(jìn)行縮略/水印處理,支持文字水印和圖片水印。支持自定義字體,文字大小,水印透明度,水印位置,判斷原圖是否是否大于指定尺寸才處理等等。
1. 編譯方法
編譯前請(qǐng)確認(rèn)您的系統(tǒng)已經(jīng)安裝了libcurl-dev libgd2-dev libpcre-dev 依賴庫(kù)
1.1 Debian / Ubuntu 系統(tǒng)舉例
# 如果你沒(méi)有安裝GCC相關(guān)環(huán)境才需要執(zhí)行 $ sudo apt-get install build-essential m4 autoconf automake make $ sudo apt-get install libgd2-noxpm-dev libcurl4-openssl-dev libpcre3-dev
1.2 CentOS /RedHat / Fedora
# 請(qǐng)確保已經(jīng)安裝了gcc automake autoconf m4 $ sudo yum install gd-devel pcre-devel libcurl-devel
1.3 FreeBSD / NetBSD / OpenBSD
# 不多說(shuō)了,自己用port 把libcurl-dev libgd2-dev libpcre-dev 裝上吧
# 編譯前請(qǐng)確保已經(jīng)安裝gcc automake autoconf m4
1.4 Windows
# 也支持的,不過(guò)要修改的代碼太多了,包括Nginx本身,用VC++來(lái)編譯
# 嫌麻煩可以用cygwin來(lái)編譯。還是不建議你這么做了,用Unix/Linux操作系統(tǒng)吧。
2. nginx / tengine 安裝
選Nginx還是Tengine,您自己看,兩者選其一
2.1 下載Tengine
# wget http://tengine.taobao.org/download/tengine-1.4.5.tar.gz # tar -zxvf tengine-1.4.5.tar.gz # cd tengine-1.4.5
2.2 下載Nginx
# wget http://nginx.org/download/nginx-1.4.0.tar.gz # tar -zxvf nginx-1.4.0.tar.gz # cd nginx-1.4.0
2.3 安裝模塊
# wget https://github.com/3078825/nginx-image/archive/master.zip # unzip master.zip # ./configure --add-module=./nginx-image-master # make # make install
3. 配置
location / { root html; #添加以下配置 image on; image_output on; }
4. 參數(shù)
- image on/off 是否開(kāi)啟縮略圖功能,默認(rèn)關(guān)閉
- image_backend on/off 是否開(kāi)啟鏡像服務(wù),當(dāng)開(kāi)啟該功能時(shí),請(qǐng)求目錄不存在的圖片(判斷原圖),將自動(dòng)從鏡像服務(wù)器地址下載原圖
- image_backend_server 鏡像服務(wù)器地址
- image_output on/off 是否不生成圖片而直接處理后輸出 默認(rèn)off
- image_jpeg_quality 75 生成JPEG圖片的質(zhì)量 默認(rèn)值75
- image_water on/off 是否開(kāi)啟水印功能
- image_water_type 0/1 水印類型 0:圖片水印 1:文字水印
- image_water_min 300 300 圖片寬度 300 高度 300 的情況才添加水印
- image_water_pos 0-9 水印位置 默認(rèn)值9 0為隨機(jī)位置,1為頂端居左,2為頂端居中,3為頂端居右,4為中部居左,5為中部居中,6為中部居右,7為底端居左,8為底端居中,9為底端居右
- image_water_file 水印文件(jpg/png/gif),絕對(duì)路徑或者相對(duì)路徑的水印圖片
- image_water_transparent 水印透明度,默認(rèn)20
- image_water_text 水印文字 "Power By Vampire"
- image_water_font_size 水印大小 默認(rèn) 5
- image_water_font 文字水印字體文件路徑
- image_water_color 水印文字顏色,默認(rèn) #000000
4.1調(diào)用說(shuō)明
這里假設(shè)你的nginx 訪問(wèn)地址為 http://127.0.0.1/
并在nginx網(wǎng)站根目錄存在一個(gè) test.jpg 的圖片
通過(guò)訪問(wèn)
http://127.0.0.1/test.jpg!c300x200.jpg 將會(huì) 生成/輸出 test.jpg 300x200 的縮略圖
其中 c 是生成圖片縮略圖的參數(shù), 300 是生成縮略圖的 寬度 200 是生成縮略圖的 高度
一共可以生成四種不同類型的縮略圖。
支持 jpeg / png / gif (Gif生成后變成靜態(tài)圖片)
C 參數(shù)按請(qǐng)求寬高比例從圖片高度 10% 處開(kāi)始截取圖片,然后縮放/放大到指定尺寸( 圖片縮略圖大小等于請(qǐng)求的寬高 )
M 參數(shù)按請(qǐng)求寬高比例居中截圖圖片,然后縮放/放大到指定尺寸( 圖片縮略圖大小等于請(qǐng)求的寬高 )
T 參數(shù)按請(qǐng)求寬高比例按比例縮放/放大到指定尺寸( 圖片縮略圖大小可能小于請(qǐng)求的寬高 )
W 參數(shù)按請(qǐng)求寬高比例縮放/放大到指定尺寸,空白處填充白色背景顏色( 圖片縮略圖大小等于請(qǐng)求的寬高 )
5. 調(diào)用舉例
http://127.0.0.1/test.jpg!c300x300.jpg http://127.0.0.1/test.jpg!t300x300.jpg http://127.0.0.1/test.jpg!m300x300.jpg http://127.0.0.1/test.jpg!w300x300.jpg http://127.0.0.1/test.c300x300.jpg http://127.0.0.1/test.t300x300.jpg http://127.0.0.1/test.m300x300.jpg http://127.0.0.1/test.w300x300.jpg
nginx實(shí)時(shí)生成縮略圖到硬盤(pán)上
現(xiàn)在隨著各終端的出現(xiàn)(手機(jī),ipad等平板),以及各種終端的手機(jī)分辨率和尺寸都不同,現(xiàn)在手機(jī)用戶流量都是寶,網(wǎng)上出現(xiàn)了各種各樣的生成縮略圖功能的架構(gòu),有使用php實(shí)時(shí)生成縮略圖的,也有用nginx + lua實(shí)現(xiàn)的,上面我也講到了使用nginx生成縮略圖,但是用戶每次訪問(wèn)都需要生成一次,會(huì)給cpu和硬盤(pán)帶來(lái)比較大的壓力,今天帶來(lái)了另外一種方式,這次使用nginx將原圖生成縮略圖到硬盤(pán)上.看我的配置
1. 首先建好cache目錄
# mkdir /data/site_cache/
2. 修改nginx配置
location ~* ^/resize { root /data/site_cache/$server_name; set $width 150; set $height 100; set $dimens ""; if ($uri ~* "^/resize_(\d+)x(\d+)/(.*)" ) { set $width $1; set $height $2; set $image_path $3; set $demins "_$1x$2"; } if ($uri ~* "^/resize/(.*)" ) { set $image_path $1; } set $image_uri image_resize/$image_path?width=$width&height=$height; if (!-f $request_filename) { proxy_pass http://127.0.0.1/$image_uri; break; } proxy_store /data/site_cache/$server_name/resize$demins/$image_path; proxy_store_access user:rw group:rw all:r; proxy_set_header Host $host; expires 30d; access_log off; } location /image_resize { alias /data/site/$server_name/; image_filter resize $arg_width $arg_height; image_filter_jpeg_quality 75; access_log off; }
生成縮略圖流程如下:
(1)、原圖在www.dbjr.com.cn/image/1.jpg。我需要一份100x100的縮略圖。
(2)、請(qǐng)求www.dbjr.com.cn/resize_100x100/image/1.jpg.
(3)、這個(gè)請(qǐng)求進(jìn)入了location ~* ^/resize,接著判斷image_path這個(gè)目錄下是否存在這張圖片,如果存在直接放回給用戶,
(4)、不存在那么跳轉(zhuǎn)到http://www.dbjr.com.cn/image_resize/image/1.jpg?width=100&height=100;
(5)、location /image_resize根據(jù)傳入的width和height執(zhí)行縮略功能,并且設(shè)置圖像質(zhì)量為75
(6)、接著生成文件到/data/site_cache/www.dbjr.com.cn/resize_100x100/image/1.jpg
(7)、并且返回圖片給用戶
(8)、nginx生成縮略圖到硬盤(pán)上的功能到這里就結(jié)束了
- 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中配置image filter模塊來(lái)實(shí)現(xiàn)動(dòng)態(tài)生成縮略圖
- Nginx生成縮略圖并存儲(chǔ)到硬盤(pán)上
- CentOS下編譯安裝nginx及配置縮略圖插件的方法教程
相關(guān)文章
nginx+lua單機(jī)上萬(wàn)并發(fā)的實(shí)現(xiàn)
nginx是我們最常用的服務(wù)器,常用于做內(nèi)容分發(fā)和反向代理,本文主要介紹了nginx+lua單機(jī)上萬(wàn)并發(fā)的實(shí)現(xiàn),有興趣的可以了解下2021-05-05PHP(FastCGI)在Nginx的alias下出現(xiàn)404錯(cuò)誤的解決方法
這篇文章主要介紹了PHP(FastCGI)在Nginx的alias下出現(xiàn)404錯(cuò)誤的解決方法,涉及nginx平臺(tái)的相關(guān)配置技巧,需要的朋友可以參考下2016-05-05Nginx1.21.6生產(chǎn)環(huán)境升級(jí)步驟
這篇文章主要介紹了Nginx1.21.6生產(chǎn)環(huán)境升級(jí)步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01詳解nginx同一端口監(jiān)聽(tīng)多個(gè)域名和同時(shí)監(jiān)聽(tīng)http與https
這篇文章主要介紹了詳解nginx同一端口監(jiān)聽(tīng)多個(gè)域名和同時(shí)監(jiān)聽(tīng)http與https的相關(guān)資料,需要的朋友可以參考下2017-05-05阿里云Linux系統(tǒng)Nginx配置多個(gè)域名的方法詳解
本篇文章主要介紹了阿里云Linux系統(tǒng)Nginx配置多個(gè)域名的方法詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02