Nginx縮圖和Fastdfs整合以及image_filter配置,7點經驗結論和5個參考資料
以下是7點經驗結論和5個參考資料
1.Nginx單獨配置縮圖與Nginx和Fastdfs模組整合,配置是不一樣的。
非整合模式的配置,類似這樣的:
location ~* /(\d+)\.(jpg)$ {
set $h $arg_h; # 獲取引數h的值
set $w $arg_w; # 獲取引數w的值
#image_filter crop $h $w;
image_filter resize $h $w; # 根據給定的長寬生成縮圖
}
location ~* /(\d+)_(\d+)x(\d+)\.(jpg)$ {
if ( -e $document_root/$1.$4 ) { # 判斷原圖是否存在
rewrite /(\d+)_(\d+)x(\d+)\.(jpg)$ /$1.$4?h=$2&w=$3 last;
}
return 404;
}
整合模式的配置,類似這樣的:
location ~ group1/M00/(.+)\.?(.+){
alias /home/fastdata/data;
ngx_fastdfs_module;
}
Fastdfs的URL比較特殊,group1/M00,自己的實踐體會是,不能隨便改名字。
2.縮圖的配置其實很簡單,難在縮圖和非縮圖共存。
location ~ group1/M00/(.+)\.?(.+){
alias /home/fastdata/data;
ngx_fastdfs_module;
image_filter resize 10 10;
}
3.親自實踐的不可行的方案,或者說最終搞不定的方案。
訪問原圖的URL
http://ip/a.img
訪問縮圖的URL
http://ip/a.img?w=10&h=10
資料庫存的是“a.img”,我希望如果想要獲得縮圖,直接在後面增加url引數,w和h。
因此,我嘗試的Nginx配置:
location ~ /group1/a/M00(.*).jpg {
49 root /home/fdfsdata/data;
50 ngx_fastdfs_module;
60 if ($w != ""){
61 # rewrite /group1/M00 /image/resize$request_uri;
62 }
63 }
64
69
91 location ~ /image/resize/group1/M00 {
92 #set $h 100;
93 #set $w $arg_w;
94 #rewrite ^/image/resize http://baidu.com?$request_uri-$document_uri-$query_string-$uri;
95 # rewrite /image/resize/group1/M00 http://baidu.com?request_uri=$request_uri;
96 root /home/fdfsdata/data;
97 ngx_fastdfs_module;
98 #image_filter test;
99 #image_filter size;
100 # image_filter off;
101 image_filter resize 100 100;
102 }
以上只代表了思路,不是“原貌”。
大致的意思,就是
a.攔截圖片,如果寬度w不為空,就rewrite重定向到“/image/resize/group1/M00”,
讓第2個配置,執行 image_filter resize 100 100,獲得縮圖。
b.如果w為空,直接獲得原圖。
總是報400,415之類的錯誤。
最初為了獲得,重定向的url,試了很多方法。
rewrite /group1/M00 /image/resize$request_uri;
最後探索出,上述方式是比較好的。
但是,最後發現Fastdfs的路徑,不能隨便改,修改了,容易出現400、404,或415.
為了探索url中的一些引數,比如$1,$request_uri等,網上看了一些資料,知道了大致的意思。
在參考別人的之前,我想到了一種方法,
rewrite ^/image/resize http://baidu.com?$request_uri-$document_uri-$query_string-$uri;
重定向到一個明確的頁面,比如百度的首頁,把引數放到?之後,然後在瀏覽器的位址列就可以看到了。
嘗試使用了echo命令,Nginx不可識別。
網上找到了,Nginx有echo模組,大概是說,安裝了echo模組,方便在Nginx用echo輸出變數,方便除錯。
4.if ($w != "")。
Nginx的if語句,左右貌似需要空格~
坑~
5.nginx之location配置
http://blog.csdn.net/hellochenlian/article/details/44655547
值得好好學習下
沒有系統學習Nginx,感覺很多時候,比較吃虧。
我打算2016年認真學習Nginx,買本好書,系統地學習下。
一點點地學,很累,記不住~
6.其實,不一定要非要用Nginx的image_filter模組實現縮圖。
也可以用程式控制,比如上傳圖片的時候,實時生成多種尺寸的圖片,存到Fastdfs。
優點和缺點,還是經典的“時間”和“空間”問題。
7.最終可行Nginx配置
location ~ /group1/M00/(.*)_([0-9]+)x([0-9]+)\.jpg{
71 root /home/fdfsdata/data;
72 ngx_fastdfs_module;
73 set $w $2;
74 set $h $3;
75 # if ($h != "0") {
76 # rewrite /group1/M00/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /group1/M00/$1.$4 last;
77 # rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ group1/M00$1.$4 break;
78 # }
79 if ($w != "0") {
80 rewrite /group1/M00/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /group1/M00/$1.$4 break;
81 }
82 image_filter resize $w $h;
83 image_filter_buffer 2M;
84 }
85
86 location ~ group1/M00/(.+)\.?(.+){
87 alias /home/fastdata/data;
88 ngx_fastdfs_module;
89 }
需要注意,用的小寫的“x”。
訪問舉例:
獲得原圖
http://42.96.184.84:8080/group1/M00/00/00/KmC4VFY7GsiATWTJAAA3vrrOOWM943.jpg
縮圖1
http://42.96.184.84:8080/group1/M00/00/00/KmC4VFY7GsiATWTJAAA3vrrOOWM943_100x30.jpg
縮圖2
http://42.96.184.84:8080/group1/M00/00/00/KmC4VFY7GsiATWTJAAA3vrrOOWM943_150x50.jpg
沒有搞成功的,最初嘗試的方案
http://42.96.184.84:8080/group1/M00/00/00/KmC4VFY7GsiATWTJAAA3vrrOOWM943.jpg?w=10&h=10
資料庫存的URL:group1/M00/00/00/KmC4VFY7GsiATWTJAAA3vrrOOWM943.jpg
如果要按照KmC4VFY7GsiATWTJAAA3vrrOOWM943_150x50.jpg展示,需要獲得檔名,修改,加上指定的寬度和高度
_150x50.
8.參考資料
FastDFS組合nginx的http_image_filter_module建立的圖片伺服器(最關鍵,可行方法,在帖子的最後面)
http://bbs.chinaunix.net/thread-4058548-1-1.html
nginx生成縮圖配置 – ttlsa教程系列之nginx(參考)
http://www.ttlsa.com/nginx/nginx-modules-image_filter_module/
Nginx國人開發縮圖模組(ngx_image_thumb)(參考,和上面的類似)
http://www.ttlsa.com/nginx/nginx-modules-ngx_image_thumb/
Nginx圖片剪裁模組探究 http_image_filter_module
http://cwtea.blog.51cto.com/4500217/1333142
nginx之location配置
http://blog.csdn.net/hellochenlian/article/details/44655547
相關文章
- FastDFS安裝fastdfs-nginx-module和nginxASTNginx
- websphere配置和優化參考Web優化
- JBuilder7和WebLogic7整合開發Struts一點經驗 (轉)UIWeb
- 一個考過CCNA的朋友經驗參考(轉)
- FastDFS的配置、部署與API使用解讀(7)Nginx的FastDFS模組ASTAPINginx
- Python畫直方圖以及包絡線和參考線Python直方圖
- FastDFS+Nginx 整合並實現斷點續傳(一)ASTNginx斷點
- nginx image_filter模組NginxFilter
- 圖論-有向圖縮點圖論
- OSI參考模型和TCP/IP參考模型模型TCP
- 參考資料
- fastdfs資料遷移以及fastdfs問題排查記錄AST
- 前端 CentOS7 新服配置參考前端CentOS
- php5.3 fastcgi方式 安裝以及和nginx整合PHPASTNginx
- 效能調整手冊和參考總結
- 考試經驗總結
- 驗證HTML的5個原因和5個資源HTML
- aix 參考資料AI
- oracle 參考資料Oracle
- 記憶體的配置和使用——效能調整手冊和參考記憶體
- InnoDB 中文參考手冊 --- 5 新增與移除 InnoDB 資料和日誌檔案 (轉)
- 談談後設資料、主資料和參考資料的差異、相互作用以及對商業智慧和決策的影響
- CentOS7 下 Nginx 的安裝和配置CentOSNginx
- Nginx的幾個常用配置和技巧Nginx
- 資料結構實驗之圖論二:圖的深度遍歷資料結構圖論
- Oracle官方參考資料Oracle
- ArcGIS參考資料整理
- 參考資料彙總
- PHP5中文參考手冊以及相關資源收集PHP
- 圖論複習之強連通分量以及縮點—Tarjan演算法圖論演算法
- 日誌和告警資料探勘經驗談
- 大資料經典學習路線(及供參考)大資料
- 【資料結構——圖和圖的儲存結構】資料結構
- 使用 .NET 5 體驗大資料和機器學習大資料機器學習
- InnoDB 中文參考手冊 --- 11 表和索引結構 (轉)索引
- FastDFS的配置、部署與API使用解讀(5)FastDFS配置詳解之Tracker配置ASTAPI
- 騰訊雲centos7下搭建fastDFS+nginxCentOSASTNginx
- FastDFS和Nginx實現分散式檔案伺服器ASTNginx分散式伺服器