Nginx服務(wù)器上搭建圖片緩存服務(wù)的基本配置解析
最近準(zhǔn)備用nginx搭建了一個(gè)圖片服務(wù)器,看中的就是nginx超強(qiáng)的靜態(tài)文件處理能力。
由于圖片量比較大,和web服務(wù)器(也是nginx)分開(kāi)運(yùn)行,雖然web服務(wù)器調(diào)用圖片沒(méi)用問(wèn)題,但畢竟是遠(yuǎn)程調(diào)用,肯定沒(méi)有本地文件系統(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; }
接下來(lái)就用到了nginx的proxy_store模塊,讓nginx 將取得的圖片緩存在本地一個(gè)目錄,下次就直接調(diào)用,(這讓網(wǎng)頁(yè)熱點(diǎn)圖片統(tǒng)計(jì)變得非常容易,討厭日志分析的管理員肯定喜歡)
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,里面將會(huì)保持圖片服務(wù)器的目錄結(jié)構(gòu)
proxy_store 沒(méi)有緩存過(guò)期,相當(dāng)于鏡像功能,這既是優(yōu)點(diǎn)也是缺點(diǎn),優(yōu)點(diǎn)是訪問(wèn)快速,缺點(diǎn)是不知哪一天,硬盤會(huì)被撐爆,不過(guò)我們可以寫(xiě)個(gè)find腳本,定時(shí)清理一下緩存就OK了。
nginx還有一種緩存proxy_cache,它在設(shè)計(jì)上比proxy_store 更先進(jìn),采用內(nèi)存+硬盤方式緩存,可以設(shè)置緩存大小和緩存過(guò)期。
proxy_cache
proxy_cache有一個(gè)問(wèn)題就是,proxy_cache不能清除指定的URL緩存,只能設(shè)置URL過(guò)期時(shí)間,但是有問(wèn)題,有人就會(huì)很快解決問(wèn)題,nginx第三方模塊ngx_cache_purge能清除指定URL。
nginx安裝時(shí)需要將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)在來(lái)一段實(shí)例,實(shí)現(xiàn)圖片緩存:
話說(shuō)proxy_tem_path,與proxy_cache_path必須在同一個(gè)分區(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)頁(yè)面緩存,動(dòng)態(tài)請(qǐng)求不緩存!
大家看一下最后一段的那個(gè)purege配置,很顯然,表示哪些IP可以手動(dòng)清除指定的URL
比如,www.dbjr.com.cn/1.jpg可以訪問(wèn)到我的圖片,那么用www.wolfdream.cn/purge/1.jpg 就可以清除圖片緩存了。
相關(guān)文章
完美解決Nginx 504 Gateway time-out問(wèn)題
這篇文章主要介紹了完美解決Nginx 504 Gateway time-out問(wèn)題,需要的朋友可以參考下2014-11-11關(guān)于Nginx開(kāi)啟gzip的配置的問(wèn)題
這篇文章主要介紹了關(guān)于Nginx開(kāi)啟gzip的配置的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Nginx通過(guò)nginx-rtmp-module模塊搭建流媒體服務(wù)器實(shí)現(xiàn)直播
近日有客戶咨詢想用Nginx搭建流媒體服務(wù)器實(shí)現(xiàn)直播,方便他們打造自己的平臺(tái),經(jīng)過(guò)各種測(cè)試發(fā)現(xiàn)如下文章不錯(cuò),特分享給需要的朋友2023-10-10詳解nginx 的 default_server 定義及匹配規(guī)則
這篇文章主要介紹了詳解nginx 的 default_server 定義及匹配規(guī)則,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Docker Nginx容器和Tomcat容器實(shí)現(xiàn)負(fù)載均衡與動(dòng)靜分離操作
這篇文章主要介紹了Docker Nginx容器和Tomcat容器實(shí)現(xiàn)負(fù)載均衡與動(dòng)靜分離操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Nginx使用if指令實(shí)現(xiàn)多個(gè)proxy_pass方式
這篇文章主要介紹了Nginx使用if指令實(shí)現(xiàn)多個(gè)proxy_pass方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01