亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

nginx緩存cache的5種方案

2024-08-30 12:27:41
字體:
來源:轉載
供稿:網友

貌似從來沒有寫過nginx的緩存功能,都是只看不分享,這是不好之習慣啊。

1、傳統緩存之一(404)

這個辦法是把nginx的404錯誤定向到后端,然后用proxy_store把后端返回的頁面保存。

配置:

location / {
root /home/html/;#主目錄
expires 1d;#網頁的過期時間
error_page 404 =200 /fetch$request_uri;#404定向到/fetch目錄下
}

location /fetch/ {#404定向到這里
internal;#指明這個目錄不能在外部直接訪問到
expires 1d;#網頁的過期時間
alias /home/html/;#虛擬目錄文件系統地址要和locaion /一致,proxy_store會將文件保存到這目錄下
proxy_pass http://www.45it.com/;#后端upstream地址,/fetch同時是一個代理
proxy_set_header Accept-Encoding '';#讓后端不要返回壓縮(gzip或deflate)的內容,保存壓縮后的內容會引發亂子。
proxy_store on;#指定nginx將代理返回的文件保存
proxy_temp_path /home/tmp;#臨時目錄,這個目錄要和/home/html在同一個硬盤分區內
}

使用的時候還有要注意是nginx要有權限往/home/tmp和/home/html下有寫入文件的權限,在linux下nginx一般會配置成nobody用戶運行,這樣這兩個目錄就要chown nobody,設成nobody用戶專用,當然也可以chmod 777,不過所有有經驗的系統管理員都會建議不要隨便使用777。

2、傳統緩存之二(!-e)

原理和404跳轉基本一致,但更簡潔一些:

location / {
root /home/html/;
proxy_store on;
proxy_set_header Accept-Encoding '';
proxy_temp_path /home/tmp;
if ( !-f $request_filename )
{
        proxy_pass http://www.45it.com/;
}
}

可以看到這個配置比404節約了不少代碼,它是用!-f來判斷請求的文件在文件系統上存不存在,不存在就proxy_pass到后端,返回同樣是用proxy_store保存。

兩種傳統緩存都有著基本一樣的優點和缺點:
缺點1:不支持帶參數的動態鏈接,比如read.php?id=1,因為nginx只保存文件名,所以這個鏈接只在文件系統下保存為read.php,這樣用戶訪問read.php?id=2時會返回不正確的結果。同時不支持http://www.45it.com/這種形式的首頁和二級目錄http://www.45it.com/sos/,因為nginx非常老實,會將這樣的請求照鏈接寫入文件系統,而這個鏈接顯然是一個目錄,所以保存失敗。這些情況都需要寫rewrite才能正確保存。
缺點2:nginx內部沒有緩存過期和清理的任何機制,這些緩存的文件會永久性地保存在機器上,如果要緩存的東西非常多,那就會撐暴整個硬盤空間。為此可以使用一個shell腳本定期清理,同時可以撰寫php等動態程序來做實時更新。
缺點3:只能緩存200狀態碼,因此后端返回301/302/404等狀態碼都不會緩存,假如恰好有一個訪問量很大的偽靜態鏈接被刪除,那就會不停穿透導致后端承載不小壓力。
缺點4:nginx不會自動選擇內存或硬盤作為存儲介質,一切由配置決定,當然在當前的操作系統里都會有操作系統級的文件緩存機制,所以存在硬盤上也不需要過分擔心大并發讀取造成的io性能問題。

nginx傳統緩存的缺點也是它和squid等緩存軟件的不同之特色,所以也可看作其優點。在生產應用中它常常用作和squid的搭檔,squid對于帶?的鏈接往往無法阻擋,而nginx能將其訪問攔住,例如:http://45it.com/?和http://45it.com/在squid上會被當做兩個鏈接,所以會造成兩次穿透;而nginx只會保存一次,無論鏈接變成http://45it.com/?1還是http://45it.com/?123,均不能透過nginx緩存,從而有效地保護了后端主機。

nginx會非常老實地將鏈接形式保存到文件系統中,這樣對于一個鏈接,可以很方便地查閱它在緩存機器上的緩存狀態和內容,也可以很方便地和別的文件管理器如rsync等配合使用,它完完全全就是一個文件系統結構。

這兩種傳統緩存都可以在linux下將文件保存到/dev/shm里,一般我也是這么做的,這樣可以利用系統內存來做緩存,利用內存的話,清理過期內容速度就會快得多。使用/dev/shm/時除了要把tmp目錄也指向到/dev/shm這個分區外,如果有大量小文件和目錄,還要修改一下這個內存分區的inode數量和最大容量:

mount -o size=2500M -o nr_inodes=480000 -o noatime,nodiratime -o remount /dev/shm

上面的命令在一臺有3G內存的機器上使用,因為/dev/shm默認最大內存是系統內存的一半就是1500M,這條命令將其調大成2500M,同時shm系統inode數量默認情況下可能是不夠用的,但有趣的是它可以隨意調節,這里調節為480000保守了點,但也基本夠用了。

3、基于memcached的緩存

nginx對memcached有所支持,但是功能并不是特別之強,性能上還是非常之優秀。

location /mem/ {
    if ( $uri ~ "^/mem/([0-9A-Za-z_]*)$" )
    {
     set $memcached_key "$1";
     memcached_pass     192.168.1.2:11211;
    }
    expires 70;
}

這個配置會將http://45it.com/mem/abc指明到memcached的abc這個key去取數據。

nginx目前沒有寫入memcached的任何機制,所以要往memcached里寫入數據得用后臺的動態語言完成,可以利用404定向到后端去寫入數據。

4、基于第三方插件ncache

ncache是新浪兄弟開發的一個不錯的項目,它利用nginx和memcached實現了一部分類似squid緩存的功能,我并沒有使用這個插件的經驗,可以參考:

http://code.google.com/p/ncache/

5、nginx新開發的proxy_cache功能

從nginx-0.7.44版開始,nginx支持了類似squid較為正規的cache功能,目前還處于開發階段,支持相當有限,這個緩存是把鏈接用md5編碼hash后保存,所以它可以支持任意鏈接,同時也支持404/301/302這樣的非200狀態。

配置:

首先配置一個cache空間:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=NAME:10m inactive=5m max_size=2m clean_time=1m;

注意這個配置是在server標簽外,levels指定該緩存空間有兩層hash目錄,第一層目錄是1個字母,第二層為2個字母,保存的文件名就會類似/path/to/cache/c/29/b7f54b2df7773722d382f4809d65029c;keys_zone為這個空間起個名字,10m指空間大小為10MB;inactive的5m指緩存默認時長5分鐘;max_size的2m是指單個文件超過2m的就不緩存;clean_time指定一分鐘清理一次緩存。

location / {
    proxy_pass http://www.45it.com/;

    proxy_cache NAME;#使用NAME這個keys_zone

    proxy_cache_valid 200 302 1h;#200和302狀態碼保存1小時
    proxy_cache_valid 301 1d;#301狀態碼保存一天
    proxy_cache_valid any 1m;#其它的保存一分鐘
}

ps:支持cache的0.7.44到0.7.51這幾個版本的穩定性均有問題,訪問有些鏈接會出現錯誤,所以這幾個版本最好不要在生產環境中使用。nginx-0.7下目前所知較為穩定的版本是0.7.39。穩定版0.6.36版也是近期更新,如果在配置里沒有使用到0.7的一些新標簽新功能,也可以使用0.6.36版。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品夜间视频香蕉| 日韩免费中文字幕| 欧美激情精品久久久久久蜜臀| 国产精品视频一区二区高潮| 亚洲人成网站免费播放| 欧美成人一区二区三区电影| 91精品国产99久久久久久| 国产精品999| 国产丝袜一区二区三区免费视频| 91精品久久久久久久久久久| 在线观看免费高清视频97| 国产成人午夜视频网址| 亚洲精品中文字幕有码专区| 日韩在线中文字幕| 在线免费观看羞羞视频一区二区| 欧美大全免费观看电视剧大泉洋| 国产精品极品尤物在线观看| 欧美成人免费观看| 成人疯狂猛交xxx| 岛国精品视频在线播放| 久久久久久有精品国产| 欧美性猛交xxxx黑人| 7777免费精品视频| 欧美成人精品不卡视频在线观看| 日韩一区二区av| 国产午夜精品麻豆| 国产成人午夜视频网址| 久久亚洲精品视频| 国产精品白丝av嫩草影院| 九九热精品视频在线播放| 久久久久国产一区二区三区| 精品国产欧美一区二区五十路| 亚洲精品永久免费| 伊人精品在线观看| 成人网址在线观看| 色噜噜狠狠色综合网图区| 国产精品午夜国产小视频| 久久香蕉国产线看观看av| 超在线视频97| 91网站免费观看| 日本欧美黄网站| 九九久久久久99精品| 亚洲精品v欧美精品v日韩精品| www.亚洲男人天堂| 91高清视频免费观看| 久久av.com| 91免费视频网站| 日韩黄在线观看| 97婷婷涩涩精品一区| 色婷婷av一区二区三区在线观看| 日本老师69xxx| 欧美黑人国产人伦爽爽爽| 亚洲自拍偷拍色图| 国产精品三级美女白浆呻吟| 久久亚洲电影天堂| 国产一区二区精品丝袜| 亚洲成色777777女色窝| 亚洲精品一区二三区不卡| 97高清免费视频| 欧美电影院免费观看| 日韩av男人的天堂| 欧美电影免费观看网站| 国产91网红主播在线观看| 欧美中文字幕第一页| 国产精品视频免费观看www| 久久夜色精品国产欧美乱| 中文字幕av一区中文字幕天堂| 亚洲精品aⅴ中文字幕乱码| 亚洲激情视频在线观看| 欧美第一淫aaasss性| 黑人精品xxx一区一二区| 国产精品激情自拍| 清纯唯美日韩制服另类| 欧美肥婆姓交大片| 中文字幕免费国产精品| 亚洲国产精品字幕| 亚洲精品国产综合区久久久久久久| 国产伊人精品在线| 欧美日韩另类视频| 欧美大片网站在线观看| 欧美视频中文字幕在线| 欧美激情a∨在线视频播放| www高清在线视频日韩欧美| 亚洲欧美制服另类日韩| 精品一区二区亚洲| 亚洲va欧美va国产综合久久| 51色欧美片视频在线观看| 日本精品久久中文字幕佐佐木| 久久天天躁狠狠躁夜夜躁2014| 隔壁老王国产在线精品| 国产99久久久欧美黑人| 成人欧美一区二区三区黑人| 亚洲成人在线视频播放| 91综合免费在线| 亚洲精品xxxx| 最近中文字幕mv在线一区二区三区四区| 欧美日韩午夜剧场| 亚洲日本中文字幕免费在线不卡| 成人网中文字幕| 国产精品一区二区女厕厕| 日韩三级成人av网| 亚洲人成欧美中文字幕| 国产日产欧美a一级在线| 国产精品久久久91| www.美女亚洲精品| 欧美亚洲午夜视频在线观看| 日韩av在线免费| 97色在线观看免费视频| 久久精品视频在线观看| 777精品视频| 在线视频日本亚洲性| 成人女保姆的销魂服务| 日韩欧美在线国产| 国产精品久久精品| 国产精品美女久久久久av超清| 成年无码av片在线| 91黄色8090| 欧美极品少妇xxxxⅹ裸体艺术| 国产亚洲综合久久| 国产精品久久久久av| 欧美日韩色婷婷| 91精品久久久久久久久久久久久| 91高清免费视频| 在线观看欧美成人| 人人爽久久涩噜噜噜网站| 日韩免费在线看| 国产欧美日韩精品丝袜高跟鞋| 国产精品久久婷婷六月丁香| 97在线精品视频| 欧美在线性视频| 宅男66日本亚洲欧美视频| 91av免费观看91av精品在线| 亚洲美女动态图120秒| 国产精品欧美亚洲777777| 国a精品视频大全| 国产精品黄视频| 成人女保姆的销魂服务| 久久天天躁狠狠躁夜夜av| 欧美精品成人在线| 国产精品久久一区| 国产伊人精品在线| 久久精品中文字幕一区| 日韩欧美在线免费| 91日韩在线视频| 亚洲加勒比久久88色综合| 日韩av网址在线观看| 国产精品久久久久久久久免费| 欧美亚洲免费电影| 91在线视频成人| 国产v综合v亚洲欧美久久| 亚洲成人中文字幕| 国产日韩欧美在线视频观看| 欧美激情第一页xxx| 日韩中文av在线| 中文欧美日本在线资源| 国产小视频91| 中文字幕欧美国内| 色噜噜国产精品视频一区二区| 日韩中文字幕第一页| 国产精品香蕉国产| 亚洲精品网站在线播放gif| 隔壁老王国产在线精品| 91精品视频免费| 日韩欧美在线视频日韩欧美在线视频|