使用Nginx image_filter實現相似OSS圖片處理前端
在家使用本身的電腦作了一個小應用,可查看照片,按之前的方式,須要在用戶上傳圖片後對進行裁剪壓縮,而後給前端一個縮略圖地址與原圖地址。這種方式有兩個弊端磁盤空間的浪費、縮略圖尺寸調整不便捷。是否有其餘不使用雲OSS存儲的狀況下本身實現一套相似OSS的圖片處理?nginx
後來搜索資料,發現使用nginx的image_filter能夠實現。根據網上其餘人的實例使用沒有成功。性能
安裝nginx與imageFilter不在複述,本身從網上看文章就能夠了。我使用的版本是nginx 1.13.12 直接自帶該插件。插件
本身調整後能夠使用,下面貼出完整配置。code
server { listen 80; server_name 127.0.0.1; charset utf-8; root /www/uploadfile; #攔截全部帶「!」號的圖片請求 location ~* ^(.*\.(?:jpg|gif|png|jpeg|bmp))!(.*){ #rewrite ^(.*\.(?:jpg|gif|png))! $1; #圖片訪問路徑 set $filename $1; #圖片壓縮尺寸 set $img_arg $2; #拆解處理尺寸參數,參數性質如200x400樣式 if ($img_arg ~ "^(\d+)x(\d+)") { set $img_width $1; set $img_height $2; } if ($img_arg ~ "^(\d+)$") { set $img_width $1; set $img_height "-"; } if ($img_arg ~ "^x(\d+)") { set $img_width "-"; set $img_height $1; } if ( $img_width = "" ){ set $img_width 100; } if ( $img_height = ""){ set $img_height 100; } #使用內部跳轉,將尺寸參數傳遞 echo_exec /_imgFilt; } #圖片處理 location /_imgFilt { alias /www/uploadfile$filename; image_filter resize $img_width $img_height; image_filter_buffer 10M; } location ~ .*\.(swf|docx|doc|xls|xlsx|txt|pdf|ppt|pptx|mp3|zip|rar|tar|gz|mp4|ttf|ttc|fmap|fmi|theme)$ { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Headers' 'X-Requested-With'; add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS'; expires 30d; } }
圖片訪問請求地址: http://127.0.0.1/upload/20181120/1542720637600.jpg!500x400server
使用以上請求,就能夠實現使用nginx image filter實施圖片處理。 因是本身的小應用在使用,因此性能與訪問速度方面還能夠。圖片
很是耗費CPU資源,若是是公司業務,該方式請謹慎使用!!!ip