這篇文章主要介紹了nginx頁面緩存怎么配置的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇nginx頁面緩存怎么配置文章都會(huì)有所收獲,下面我們一起來看看吧。
創(chuàng)新互聯(lián)建站主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁視覺設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、網(wǎng)絡(luò)營銷推廣、網(wǎng)站程序開發(fā)、HTML5響應(yīng)式網(wǎng)站建設(shè)、手機(jī)網(wǎng)站開發(fā)、微商城、網(wǎng)站托管及成都網(wǎng)站維護(hù)公司、WEB系統(tǒng)開發(fā)、域名注冊(cè)、國內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為墻體彩繪行業(yè)客戶提供了網(wǎng)站推廣服務(wù)。
nginx之頁面緩存
1.指令說明
proxy_cache_path
語法:proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size];
默認(rèn)值:none
使用字段:http
指令指定緩存的路徑和一些其他參數(shù),緩存的數(shù)據(jù)存儲(chǔ)在文件中,并且使用代理url的哈希值作為關(guān)鍵字與文件名。levels參數(shù)指定緩存的子目錄數(shù),例如:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
文件名類似于:
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
levels指定目錄結(jié)構(gòu),可以使用任意的1位或2位數(shù)字作為目錄結(jié)構(gòu),如 x, x:x,或x:x:x 例如: “2”, “2:2”, “1:1:2“,但是最多只能是三級(jí)目錄。
所有活動(dòng)的key和元數(shù)據(jù)存儲(chǔ)在共享的內(nèi)存池中,這個(gè)區(qū)域用keys_zone參數(shù)指定。one指的是共享池的名稱,10m指的是共享池的大小。
注意每一個(gè)定義的內(nèi)存池必須是不重復(fù)的路徑,例如:
proxy_cache_path /data/nginx/cache/one levels=1 keys_zone=one:10m; proxy_cache_path /data/nginx/cache/two levels=2:2 keys_zone=two:100m; proxy_cache_path /data/nginx/cache/three levels=1:1:2 keys_zone=three:1000m;
如果在inactive參數(shù)指定的時(shí)間內(nèi)緩存的數(shù)據(jù)沒有被請(qǐng)求則被刪除,默認(rèn)inactive為10分鐘。一個(gè)名為cache manager的進(jìn)程控制磁盤的緩存大小,它被用來刪除不活動(dòng)的緩存和控制緩存大小,這些都在max_size參數(shù)中定義,當(dāng)目前緩存的值超出max_size指定的值之后,超過其大小后最少使用數(shù)據(jù)(lru替換算法)將被刪除。內(nèi)存池的大小按照緩存頁面數(shù)的比例進(jìn)行設(shè)置,一個(gè)頁面(文件)的元數(shù)據(jù)大小按照操作系統(tǒng)來定,如freebsd/i386下為64字節(jié),freebsd/amd64下為128字節(jié)。
proxy_cache
語法:proxy_cache zone_name;
默認(rèn)值:none
使用字段:http, server, location
設(shè)置一個(gè)緩存區(qū)域的名稱,一個(gè)相同的區(qū)域可以在不同的地方使用。
在0.7.48后,緩存遵循后端的”expires”, “cache-control: no-cache”, “cache-control: max-age=xxx”頭部字段,0.7.66版本以后,”cache-control:“private”和”no-store”頭同樣被遵循。nginx在緩存過程中不會(huì)處理”vary”頭,為了確保一些私有數(shù)據(jù)不被所有的用戶看到,后端必須設(shè)置 “no-cache”或者”max-age=0”頭,或者proxy_cache_key包含用戶指定的數(shù)據(jù)如$cookie_xxx,使用cookie的值作為proxy_cache_key的一部分可以防止緩存私有數(shù)據(jù),所以可以在不同的location中分別指定proxy_cache_key的值以便分開私有數(shù)據(jù)和公有數(shù)據(jù)。
緩存指令依賴代理緩沖區(qū)(buffers),如果proxy_buffers設(shè)置為off,緩存不會(huì)生效。
proxy_cache_valid
語法:proxy_cache_valid reply_code [reply_code …] time;
默認(rèn)值:none
使用字段:http, server, location
為不同的應(yīng)答設(shè)置不同的緩存時(shí)間,例如:
proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;
為應(yīng)答代碼為200和302的設(shè)置緩存時(shí)間為10分鐘,404代碼緩存1分鐘。
如果只定義時(shí)間:
proxy_cache_valid 5m;
那么只對(duì)代碼為200, 301和302的應(yīng)答進(jìn)行緩存。
同樣可以使用any參數(shù)任何應(yīng)答。
proxy_cache_valid 200 302 10m; proxy_cache_valid 301 1h; proxy_cache_valid any 1m;
2.定義一個(gè)簡單nginx緩存服務(wù)器
[root@nginx ~]# vim /etc/nginx/nginx.conf proxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://webservers; proxy_set_header x-real-ip $remote_addr; proxy_cache webserver; proxy_cache_valid 200 10m; } }
3.新建緩存目錄
[root@nginx ~]# mkdir -pv /data/nginx/cache/webserver
4.重新加載一下配置文件
[root@nginx webserver]# service nginx reload nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful 重新載入 nginx: [確定]
5.下面我們來測試一下(谷歌瀏覽器)
注,大家用谷歌瀏覽器測試的時(shí)候,可以按f12調(diào)用開發(fā)工具,選擇network選項(xiàng),我們可以看到,response headers,在這里我們可以看到,我們請(qǐng)求的是否是緩存,但現(xiàn)在還看不到,下面我們來配置一下,再來測試。
6. 緩存變量說明
$server_addr
服務(wù)器地址,在完成一次系統(tǒng)調(diào)用后可以確定這個(gè)值,如果要繞開系統(tǒng)調(diào)用,則必須在listen中指定地址并且使用bind參數(shù)。
$upstream_cache_status
0.8.3版本中其值可能為:
miss 未命中
expired - expired。請(qǐng)求被傳送到后端。
updating - expired。由于proxy/fastcgi_cache_use_stale正在更新,將使用舊的應(yīng)答。
stale - expired。由于proxy/fastcgi_cache_use_stale,后端將得到過期的應(yīng)答。
hit 命中
[root@nginx ~]# vim /etc/nginx/nginx.conf proxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #增加兩頭部 add_header x-via $server_addr; add_header x-cache $upstream_cache_status; location / { proxy_pass http://webservers; proxy_set_header x-real-ip $remote_addr; proxy_cache webserver; proxy_cache_valid 200 10m; } }
7.重新加載一下配置文件
[root@nginx ~]# service nginx reload nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful 重新載入 nginx: [確定]
8.測試一下
注,從圖中我們可以看到,我們?cè)L問的服務(wù)器是192.168.18.208,緩存命中。大家可以看到是不是很直觀啊。下面我們看一下緩存目錄。
9.查看一下緩存目錄
[root@nginx ~]# cd /data/nginx/cache/webserver/f/63/ [root@nginx 63]# ls 681ad4c77694b65d61c9985553a2763f
注,緩存目錄里確實(shí)有緩存文件。
關(guān)于“nginx頁面緩存怎么配置”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“nginx頁面緩存怎么配置”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前文章:nginx頁面緩存怎么配置
標(biāo)題鏈接:http://chinadenli.net/article14/ihojge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站營銷、外貿(mào)網(wǎng)站建設(shè)、小程序開發(fā)、定制開發(fā)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)