Nginx服務(wù)器上搭建圖片緩存服務(wù)的基本配置解析
最近準(zhǔn)備用nginx搭建了一個圖片服務(wù)器,看中的就是nginx超強(qiáng)的靜態(tài)文件處理能力。
由于圖片量比較大,和web服務(wù)器(也是nginx)分開運行,雖然web服務(wù)器調(diào)用圖片沒用問題,但畢竟是遠(yuǎn)程調(diào)用,肯定沒有本地文件系統(tǒng)那么快,因此仍然有優(yōu)化的空間。
proxy_store
使用前的nginx配置
location ~* ^.+\.(js|ico|gif|jpg|jpeg|png|html|htm)$ { log_not_found off; access_log off; expires 7d; }
接下來就用到了nginx的proxy_store模塊,讓nginx 將取得的圖片緩存在本地一個目錄,下次就直接調(diào)用,(這讓網(wǎng)頁熱點圖片統(tǒng)計變得非常容易,討厭日志分析的管理員肯定喜歡)
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ { log_not_found off; expires 7d ; access_log off; proxy_store on; proxy_store_access user:rw group:rw all:rw; if ( !-e $request_filename) { proxy_pass http://img.example.com } }
默認(rèn)的緩存路徑位于 /var/cache/nginx/proxy_temp,里面將會保持圖片服務(wù)器的目錄結(jié)構(gòu)
proxy_store 沒有緩存過期,相當(dāng)于鏡像功能,這既是優(yōu)點也是缺點,優(yōu)點是訪問快速,缺點是不知哪一天,硬盤會被撐爆,不過我們可以寫個find腳本,定時清理一下緩存就OK了。
nginx還有一種緩存proxy_cache,它在設(shè)計上比proxy_store 更先進(jìn),采用內(nèi)存+硬盤方式緩存,可以設(shè)置緩存大小和緩存過期。
proxy_cache
proxy_cache有一個問題就是,proxy_cache不能清除指定的URL緩存,只能設(shè)置URL過期時間,但是有問題,有人就會很快解決問題,nginx第三方模塊ngx_cache_purge能清除指定URL。
nginx安裝時需要將ngx_cache_purege加載進(jìn)去。
./configure --user=www --group=www --add-module=/root/dxm/nginx/ngx_cache_purge-1.2
其中,/root/dxm/nginx/ngx_cache_purge-1.2為ngx_cache_purge解壓路徑(附件中提供ngx_cache_purge tar包下載)
現(xiàn)在來一段實例,實現(xiàn)圖片緩存:
話說proxy_tem_path,與proxy_cache_path必須在同一個分區(qū)之下!
proxy_temp_path /usr/local/nginx/proxy_temp; proxy_cache_path /usr/local/nginx/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=1g; upstream tomcat_server{ server 127.0.0.1:8080; } server{ listen 192.168.154.128; server_name www.wolf.com; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { proxy_cache cache_one; proxy_cache_methods GET HEAD POST; proxy_cache_min_uses 1; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; proxy_cache_valid any 1m; proxy_cache_key "$host:$server_port$uri$is_args$args"; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://tomcat_server; } location ~ .*\.(jsp)$ { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://tomcat_server; } location ~ /purge(/.*) { allow 192.168.154.128; allow 192.168.154.1; deny all; proxy_cache_purge cache_one $host:$server_port$1$is_args$args; }
恩,靜態(tài)頁面緩存,動態(tài)請求不緩存!
大家看一下最后一段的那個purege配置,很顯然,表示哪些IP可以手動清除指定的URL
比如,chabaoo.cn/1.jpg可以訪問到我的圖片,那么用www.wolfdream.cn/purge/1.jpg 就可以清除圖片緩存了。
相關(guān)文章
完美解決Nginx 504 Gateway time-out問題
這篇文章主要介紹了完美解決Nginx 504 Gateway time-out問題,需要的朋友可以參考下2014-11-11Nginx通過nginx-rtmp-module模塊搭建流媒體服務(wù)器實現(xiàn)直播
近日有客戶咨詢想用Nginx搭建流媒體服務(wù)器實現(xiàn)直播,方便他們打造自己的平臺,經(jīng)過各種測試發(fā)現(xiàn)如下文章不錯,特分享給需要的朋友2023-10-10詳解nginx 的 default_server 定義及匹配規(guī)則
這篇文章主要介紹了詳解nginx 的 default_server 定義及匹配規(guī)則,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Docker Nginx容器和Tomcat容器實現(xiàn)負(fù)載均衡與動靜分離操作
這篇文章主要介紹了Docker Nginx容器和Tomcat容器實現(xiàn)負(fù)載均衡與動靜分離操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11Nginx使用if指令實現(xiàn)多個proxy_pass方式
這篇文章主要介紹了Nginx使用if指令實現(xiàn)多個proxy_pass方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01