婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > nginx proxy_cache 緩存配置詳解

nginx proxy_cache 緩存配置詳解

熱門標(biāo)簽:新鄉(xiāng)牧野400電話申請 撫州市城區(qū)地圖標(biāo)注 激光標(biāo)記地圖標(biāo)注 高德地圖標(biāo)注足跡怎么打標(biāo) 中國地圖標(biāo)注上各個省 智能電銷機器人真的有用么 百度地圖底圖標(biāo)注 電銷智能機器人試用 企業(yè)辦理400電話收費標(biāo)準(zhǔn)

前言:

由于本人工作原因,涉及到網(wǎng)絡(luò)直播領(lǐng)域,其中視頻的回放下載,涉及到了一些視頻下載方面的技術(shù)。針對于一個完整視頻的下載,目前市面上的主流做法是,先將整個視頻流切片,存儲到文件服務(wù)器中,在用戶需要觀看回放視頻時。通過一個視頻回源服務(wù)器,去文件服務(wù)器中逐個請求切片,返回給用戶播放。

今天著重探討的是關(guān)于回源服務(wù)器緩存的配置以及合理的緩存策略。

通過給回源服務(wù)器配置緩存的案例,詳細(xì)講解一整套緩存配置機制,并且可沿用到其他任何緩存配置場景中。

今天的講解分為四點:

  • 回源服務(wù)器的工作是啥為啥
  • 需要給回源服務(wù)器加緩存
  • 如何配置緩存
  • 如何針對業(yè)務(wù)場景配置完備的緩存機制

回源服務(wù)器的工作:

回源服務(wù)器在下面敘述中簡稱:源站 如圖所示,在文件下載的過程中,橫跨在cdn與文件服務(wù)器之間,作為下載樞紐。

源站架構(gòu):源站是nginx+php的webserver架構(gòu),如圖所示:


但如果源站只是簡單的收到請求,然后下載資源,再返回,勢必會存在以下幾點不夠優(yōu)化的問題:

1、cdn可能存在多次回源現(xiàn)象

2、源站對同一資源的多次下載,存在網(wǎng)絡(luò)流量帶寬浪費,以及不必要的耗時。

所以為了優(yōu)化這些問題,需要給源站做一層緩存。緩存策略采用nginx自帶的proxy_cache模塊。

proxy_cache原理:

proxy_cache模塊的工作原理如圖所示:

 

如何配置proxy_cache模塊

在nginx.conf文件中添加如下代碼:

http{
  ......
  proxy_cache_path/data/nginx/tmp-test levels=1:2 keys_zone=tmp-test:100m inactive=7d max_size=1000g;
}

代碼說明:

proxy_cache_path 緩存文件路徑

levels 設(shè)置緩存文件目錄層次;levels=1:2 表示兩級目錄

keys_zone 設(shè)置緩存名字和共享內(nèi)存大小

inactive 在指定時間內(nèi)沒人訪問則被刪除

m ax_size 最大緩存空間,如果緩存空間滿,默認(rèn)覆蓋掉緩存時間最長的資源。

當(dāng)配置好之后,重啟nginx,如果不報錯,則配置的proxy_cache會生效

查看   proxy_cache_path / data/ nginx / 目錄, 會發(fā)現(xiàn)生成了 tmp -test 文件夾。

如何使用proxy_cache

在你對應(yīng)的nginx vhost server配置文件中添加如下代碼:

location /tmp-test/ {
 proxy_cache tmp-test;
 proxy_cache_valid 200 206 304 301 302 10d;
 proxy_cache_key $uri;
 proxy_set_header Host $host:$server_port;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_passhttp://127.0.0.1:8081/media_store.php/tmp-test/;
}

配置項介紹: Proxy_cache tmp -test 使用名為 tmp -test 的對應(yīng)緩存配置

proxy_cache_valid  200 206 304 301 302 10d; 對httpcode為200…的緩存10天

proxy_cache_key $uri  定義緩存唯一key,通過唯一key來進行hash存取

proxy_set_header  自定義http header頭,用于發(fā)送給后端真實服務(wù)器。

proxy_pass   指代理后轉(zhuǎn)發(fā)的路徑,注意是否 需要 最后的 /

到這里,最基本的 proxy_cache 功能就配置成功了。當(dāng)uri成功匹配到該location,則proxy_cache就會生效。

添加proxy_cache之后,請求過程的變化:

1、第一次訪問:

 

第一次訪問,proxy_cache并沒有找到對應(yīng)的緩存文件(未命中緩存MISS),所以當(dāng)?shù)谝淮握埱笸瓿傻耐瑫r,proxy_cache會保持緩存:

2、保存緩存,如圖所示:

 

3、同一個url第二次訪問,當(dāng)同一個文件再次到達源站,proxy_cache就會找到其對應(yīng)的緩存文件(命中緩存HIT)直接返回給請求端,無需再執(zhí)行php程序,如圖所示:

 

提出疑問:

到此,就完成了最基本的proxy_cache配置和訪問過程介紹,但是最基本的配置,往往無法滿足我們的業(yè)務(wù)需求,我們往往會提出以下幾點疑問和需求:

  1. 需要主動清理緩存文件
  2. 寫入路徑為一塊磁盤,如果磁盤打滿該怎么解決?
  3. 如何讓源站支持?jǐn)帱c續(xù)傳,以及斷點續(xù)傳的緩存策略
  4. 如果請求端 range 請求(分片下載)一個大資源,同樣的uri,如何區(qū)別請求?
  5. 還需要告訴請求端,資源的過期時間
  6. 日志統(tǒng)計,如何配置命中與不命中字段,如何做統(tǒng)計?

面對以上疑問,我們一個一個解決。

問題一:主動清理緩存

采用:nginx  proxy_cache_purge 模塊 ,該模塊與proxy_cache成對出現(xiàn),功能正好相反。 設(shè)計方法:在nginx中,另啟一個server,當(dāng)需要清理響應(yīng)資源的緩存時,在本機訪問這個server。 例如: 訪問 127.0.0.1:8083/tmp-test/TL39ef7ea6d8e8d48e87a30c43b8f75e30.txt 即可清理該資源的緩存文件。 配置方法:

location /tmp-test/ {
        allow 127.0.0.1; //只允許本機訪問
        deny all; //禁止其他所有ip
        proxy_cache_purge tmp-test $uri; //清理緩存
    }

proxy_cache_purge:緩存清理模塊 tmp-test:指定的key_zone $uri:指定的生成key的參數(shù) proxy_cache_purge緩存清理過程,如圖所示:

 

問題二:緩存文件強磁盤打滿該怎么辦?

由于寫入路徑為一個單一目錄,只能寫入一塊磁盤。一塊磁盤很快就會被打滿,解決該問題有如下兩種方法:

1、將多塊磁盤做磁盤陣列? 缺點是:減小了實際的存儲空間。

2、巧妙得運用proxy_cache_path的目錄結(jié)構(gòu),由于levels=1:2,這導(dǎo)致緩存文件的目錄結(jié)構(gòu)為兩層,每層目錄名,都是由hash函數(shù)生成。如圖所示:

 

總共含有16*16*16=4096個文件目錄。對該一級目錄進行軟連接,分別將0-f軟連接到你所需要的指定磁盤目錄上,如圖所示:

 

通過軟鏈的方法,實現(xiàn):將不同盤下的目錄作為真正存放數(shù)據(jù)的路徑,解決了多盤利用,單盤被打滿的問題。

問題三:支持range(斷點續(xù)傳)

添加上緩存代理之后,客戶端發(fā)起的range請求將會失效,如下圖所示:

 

導(dǎo)致range參數(shù)無法傳遞到下一級的原因如下:

當(dāng)緩存代理轉(zhuǎn)發(fā)http請求到后端服務(wù)器時,http header會改變,header中的部分參數(shù),會被取消掉。其中range參數(shù)被取消,導(dǎo)致,后端nginx服務(wù)器沒有收到range參數(shù),最終導(dǎo)致這個分片下載不成功。所以需要對代理轉(zhuǎn)發(fā)的header進行配置。 例如:

location /tmp-test/ {
        proxy_cache tmp-test;
        proxy_cache_valid 200 206 304 301 302 10d;
        proxy_cache_key $uri;
        proxy_set_header Range $http_range;
        proxy_pass http://127.0.0.1:8081/media_store.php/tmp-test/;
}

紅色部分的含義:將http請求中的range值($http_range)放到代理轉(zhuǎn)發(fā)的http請求頭中作為參數(shù)range的值。

問題四,當(dāng)支持range加載后,proxy_cache_key,則需要重新配置:

如果請求端 Range請求(分片下載)一個大資源,同樣的uri,proxy cache如何識別資源對應(yīng)的key。 由于nginx配置為:proxy_cache_key $uri,用uri作為key 所以當(dāng)請求為普通請求和range請求時,都是同樣的uri作為key。proxy_cache將有可能導(dǎo)致錯誤返回。如下圖所示:

 

解決方法如下: 修改proxy_cache_key ,配置proxy_cache_key $http_range$uri; 這樣就能解決:key唯一性。可以避免不管是正常請求還是不同的range請求,第一次獲取的內(nèi)容和之后獲取的緩存內(nèi)容都不會出現(xiàn)異常。

問題五:如何配置-返回過期時間

需要通過返回過期時間來指定請求端,哪些資源需要緩存,哪些資源不緩存,

參數(shù) 正常請求 range請求
返回過期時間 返回 不返回

為了防止請求端將分片資源當(dāng)做完整資源緩存起來,我們需要對正常請求,返回過期時間;對range請求, 不返回過期時間。 解決該問題,通過對nginx配置即可解決:

location /media_store.php {
   fastcgi_pass  127.0.0.1:9000;
   fastcgi_index media_store.php;
   fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
   include    fastcgi_params;
   if ( $http_range = ''){
     expires 2592000s;
   }
}

在proxy_pass代理之后的location中加入對$http_range的判斷,expires 表示過期時間。 2592000s指緩存過期時間。

問題七:緩存命中情況如何在http頭中體現(xiàn),以及在nginx日志中查看

解決方法:

 利用nginx $upstream_cache_status變量:該變量代表緩存命中的狀態(tài),

如果命中,為HIT;如果未命中,為MISS

在返回nginx server配置中添加:

add_header Nginx-Cache "$upstream_cache_status";

在nginxlog中添加:

log_format combinedio …$upstream_cache_status;

http返回head截圖:

 

nginx log日志截圖:

 

總結(jié):

整個一套完備的緩存策略就介紹到此,這套方案中不僅實現(xiàn)了基本的緩存配置,還解決了實際場景應(yīng)用中會遇到的,磁盤擴展,緩存清理,斷點續(xù)傳,緩存過期時間,緩存命中提示等問題,只要將這套方案靈活運用,不管是再復(fù)雜的場景,基本都能滿足需求。以上都是我在工作中爬過的坑,不斷完善總結(jié)出的結(jié)果,希望對讀者能有幫助。

到此這篇關(guān)于nginx proxy_cache 緩存配置詳解的文章就介紹到這了,更多相關(guān)nginx proxy_cache 緩存 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標(biāo)簽:西安 辛集 臨汾 海西 邯鄲 南通 忻州 延安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《nginx proxy_cache 緩存配置詳解》,本文關(guān)鍵詞  nginx,proxy,cache,緩存,配置,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《nginx proxy_cache 緩存配置詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于nginx proxy_cache 緩存配置詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲一区免费在线观看| 亚洲黄网站在线观看| 欧美日韩卡一卡二| 欧美日韩视频在线一区二区| 欧美日韩一级片在线观看| 欧美一区二区免费观在线| 日韩精品在线网站| 国产精品入口麻豆九色| 亚洲午夜电影在线| 国产精品一色哟哟哟| 一本久道久久综合中文字幕| 欧美一区二区三区色| 国产精品欧美综合在线| 丝袜美腿亚洲一区| 成人97人人超碰人人99| 8x8x8国产精品| 中文字幕免费不卡在线| 午夜精品成人在线视频| 成人av在线一区二区三区| 4438x成人网最大色成网站| 国产精品天天看| 日韩电影在线看| 91蜜桃传媒精品久久久一区二区| 欧美成人一级视频| 一区二区三区欧美久久| 国产高清精品在线| 欧美日韩中文国产| 中文字幕在线一区| 精彩视频一区二区| 欧美久久久久久蜜桃| 日韩毛片精品高清免费| 久久99久久99| 欧美日韩高清一区二区不卡| 精品一区二区免费| 欧美午夜精品一区二区三区| 91麻豆文化传媒在线观看| 精品乱人伦小说| 亚洲第一成年网| 99精品偷自拍| 国产精品久久久久久久久免费桃花 | 国产精品丝袜久久久久久app| 日韩精品久久久久久| av电影在线观看一区| 2023国产精华国产精品| 亚洲大片免费看| 色先锋资源久久综合| 欧美国产精品一区二区三区| 韩国av一区二区三区四区| 欧美性生活久久| 99久久伊人久久99| 亚洲欧洲制服丝袜| 欧美日韩一区三区| 成人黄色软件下载| 蜜臀av一区二区在线观看| 日韩精品一区二区三区中文不卡| jlzzjlzz国产精品久久| 麻豆一区二区99久久久久| 91麻豆精品国产91| 99久久国产免费看| 国产高清精品网站| 精品国产1区2区3区| 99久久伊人网影院| 91在线免费视频观看| 国产欧美一区二区精品仙草咪| 另类调教123区| 日韩一区二区精品在线观看| 天使萌一区二区三区免费观看| 欧美日韩国产综合一区二区 | 美女视频免费一区| 日韩亚洲欧美综合| 久久99这里只有精品| www激情久久| 东方欧美亚洲色图在线| 亚洲精品午夜久久久| 欧美视频在线一区| 亚洲1区2区3区4区| 日韩欧美一卡二卡| proumb性欧美在线观看| 亚洲自拍偷拍九九九| 91麻豆精品国产91久久久久| 国产精品一线二线三线| 亚洲美腿欧美偷拍| 欧美色窝79yyyycom| 精品一区二区三区免费视频| 久久精品一区二区三区不卡牛牛| 国产精品中文有码| 亚洲激情自拍偷拍| 欧美一级高清大全免费观看| 狠狠色2019综合网| 国产精品丝袜一区| 欧美电影影音先锋| 国模大尺度一区二区三区| 亚洲欧美影音先锋| 欧美私人免费视频| 国产真实乱偷精品视频免| 亚洲天堂av一区| 日韩午夜激情视频| jizzjizzjizz欧美| 日韩成人一级片| 欧美激情一区二区三区在线| 欧美日韩国产系列| 成人精品鲁一区一区二区| 三级精品在线观看| 亚洲国产精华液网站w| 欧美日韩久久一区二区| av在线播放不卡| 极品美女销魂一区二区三区| 一区二区理论电影在线观看| 欧美成人精品高清在线播放| 91久久精品午夜一区二区| 激情国产一区二区| 亚洲一二三区在线观看| 国产拍揄自揄精品视频麻豆| 欧美精品黑人性xxxx| 色网站国产精品| 国产a精品视频| 美女诱惑一区二区| 亚洲自拍偷拍网站| 亚洲同性同志一二三专区| 精品免费视频.| 欧美久久久久免费| 欧美日韩视频第一区| 懂色中文一区二区在线播放| 久久99国产精品免费| 日韩精品一区第一页| 亚洲综合在线电影| 亚洲丝袜自拍清纯另类| 国产亚洲一区二区三区在线观看| 欧美二区三区的天堂| 在线观看一区二区精品视频| 99久久夜色精品国产网站| 懂色中文一区二区在线播放| 蜜桃久久精品一区二区| 日韩专区在线视频| 亚洲国产精品久久人人爱| 亚洲欧美另类图片小说| 亚洲视频香蕉人妖| 亚洲靠逼com| 亚洲高清视频在线| 午夜视频一区在线观看| 偷偷要91色婷婷| 亚洲国产综合人成综合网站| 一区二区视频在线看| 亚洲人成人一区二区在线观看 | 亚洲欧洲中文日韩久久av乱码| 欧美激情一区三区| 日本一区二区高清| 国产精品第一页第二页第三页| 国产欧美一区二区三区网站| 国产欧美久久久精品影院| 国产精品麻豆欧美日韩ww| 国产精品久久久久一区二区三区共| 国产目拍亚洲精品99久久精品| 中文字幕av一区二区三区| 中文字幕中文字幕在线一区 | 天天操天天干天天综合网| 亚洲高清三级视频| 青椒成人免费视频| 国产乱码精品一区二区三区av| 懂色av一区二区三区蜜臀| www.亚洲免费av| 欧美少妇一区二区| 日韩一区二区三区视频| 久久久亚洲精品石原莉奈| 国产精品免费丝袜| 亚洲综合区在线| 青青草97国产精品免费观看 | 最新中文字幕一区二区三区 | 日韩一级在线观看| 日韩一二在线观看| 国产精品视频线看| 午夜精品免费在线| 国产精品123区| 91国产成人在线| 亚洲精品在线免费播放| 中文字幕在线不卡| 日韩av电影免费观看高清完整版 | 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品美女www爽爽爽| 一区二区三区日韩欧美精品| 六月丁香综合在线视频| 岛国精品在线播放| 精品视频资源站| 久久一二三国产| 亚洲欧洲日韩av| 蜜桃在线一区二区三区| av亚洲精华国产精华精| 91精品国产一区二区| 亚洲三级视频在线观看| 午夜日韩在线电影| 国产一区二区精品久久| 在线视频你懂得一区二区三区| 久久日韩粉嫩一区二区三区| 天天综合色天天综合| 丁香六月久久综合狠狠色| 欧美综合久久久| 国产精品狼人久久影院观看方式| 午夜婷婷国产麻豆精品| 国产a视频精品免费观看| 欧美肥大bbwbbw高潮|