Nginx的ngx_http_image_filter_module 模塊(nginx版本為0.7.54+) 可用來動態(tài)轉換JPEG, GIF, PNG, 和WebP格式的圖片大小。
該模塊默認沒有構建,需要通過 --with-http_image_filter_module 配置參數(shù)啟用。
如果圖片訪問量不大,可以使用該模塊。
該模塊使用了libgd庫。 推薦使用該庫的最新版本。
以下為在已經安裝了nginx的情況下添加該模塊的步驟。
1 安裝依賴
yum -y install gd-devel
yum -y install libxslt-devel
yum -y install perl-devel perl-ExtUtils-Embed
2 查看原nginx參數(shù)
輸出結果如下:
nginx version: nginx/1.12.2
configure arguments:
查看是否有--with-http_image_filter_module,如果有則說明已經安裝過,否則繼續(xù)安裝。
3 編譯
重新編譯時需要下載和原來相同版本的nginx源碼,解壓。
添加--with-http_image_filter_module=dynamic及原來的參數(shù)(不需要執(zhí)行make install命令重新安裝)
./configure --with-http_image_filter_module=dynamic
make
4 備份原nginx
cp -r /usr/local/nginx /usr/local/nginxbak
5 覆蓋nginx
cp objs/nginx /usr/local/nginx/sbin/
mkdir /usr/local/nginx/module
cp objs/ngx_http_image_filter_module.so /usr/local/nginx/module/ngx_http_image_filter_module.so
6 修改配置文件
vim /usr/local/nginx/conf/nginx.conf
load_module /usr/local/nginx/module/ngx_http_image_filter_module.so;
location ~* /images/(.+)_(\d+)x(\d+)\.(jpg|jpeg|gif|png)$ {
set $w $2;
set $h $3;
image_filter resize $w $h;
image_filter_buffer 30M; #設置圖片緩沖區(qū)的最大大小,大小超過設定值,服務器將返回錯誤415
image_filter_interlace on;
image_filter_jpeg_quality 80;
try_files /$1.$4 /notfound.jpg;
expires 1d;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
alias /home/publisherupload/ ; #root 能夠讓訪問 /images/ 路徑時,訪問到 /User/XX/Desktop/images,如果將 root 替換為 alias,則訪問的是 /User/XX/Desktop/;其中 /User/XX/Desktop/ 是本機中的絕對路徑。
}
location /images {
alias /home/publisherupload/ ; #root 能夠讓訪問 /images/ 路徑時,訪問到 /User/XX/Desktop/images,如果將 root 替換為 alias,則訪問的是 /User/XX/Desktop/;其中 /User/XX/Desktop/ 是本機中的絕對路徑。
autoindex on; #打開目錄瀏覽功能
}
7 重載nginx配置
/usr/local/nginx/sbin/nginx -s
8 測試
最終的圖片訪問地址為在原圖片地址后面加入_寬度X高度參數(shù)
http://110.87.103.58:12345/images/2021-01/202101250944272_500x400.png
參考
https://cloud.tencent.com/developer/article/1644466
到此這篇關于使用nginx動態(tài)轉換圖片大小生成縮略圖的文章就介紹到這了,更多相關nginx動態(tài)轉換圖片大小內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!