這篇文章主要介紹了nginx頁面緩存怎么配置的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇nginx頁面緩存怎么配置文章都會有所收獲,下面我們一起來看看吧。
創(chuàng)新互聯(lián)建站主要為客戶提供服務項目涵蓋了網(wǎng)頁視覺設計、VI標志設計、網(wǎng)絡營銷推廣、網(wǎng)站程序開發(fā)、HTML5響應式網(wǎng)站建設、手機網(wǎng)站開發(fā)、微商城、網(wǎng)站托管及成都網(wǎng)站維護公司、WEB系統(tǒng)開發(fā)、域名注冊、國內外服務器租用、視頻、平面設計、SEO優(yōu)化排名。設計、前端、后端三個建站步驟的完善服務體系。一人跟蹤測試的建站服務標準。已經(jīng)為墻體彩繪行業(yè)客戶提供了網(wǎng)站推廣服務。
nginx之頁面緩存
1.指令說明
proxy_cache_path
語法:proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size];
默認值:none
使用字段:http
指令指定緩存的路徑和一些其他參數(shù),緩存的數(shù)據(jù)存儲在文件中,并且使用代理url的哈希值作為關鍵字與文件名。levels參數(shù)指定緩存的子目錄數(shù),例如:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
文件名類似于:
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
levels指定目錄結構,可以使用任意的1位或2位數(shù)字作為目錄結構,如 x, x:x,或x:x:x 例如: “2”, “2:2”, “1:1:2“,但是最多只能是三級目錄。
所有活動的key和元數(shù)據(jù)存儲在共享的內存池中,這個區(qū)域用keys_zone參數(shù)指定。one指的是共享池的名稱,10m指的是共享池的大小。
注意每一個定義的內存池必須是不重復的路徑,例如:
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ù)據(jù)沒有被請求則被刪除,默認inactive為10分鐘。一個名為cache manager的進程控制磁盤的緩存大小,它被用來刪除不活動的緩存和控制緩存大小,這些都在max_size參數(shù)中定義,當目前緩存的值超出max_size指定的值之后,超過其大小后最少使用數(shù)據(jù)(lru替換算法)將被刪除。內存池的大小按照緩存頁面數(shù)的比例進行設置,一個頁面(文件)的元數(shù)據(jù)大小按照操作系統(tǒng)來定,如freebsd/i386下為64字節(jié),freebsd/amd64下為128字節(jié)。
proxy_cache
語法:proxy_cache zone_name;
默認值:none
使用字段:http, server, location
設置一個緩存區(qū)域的名稱,一個相同的區(qū)域可以在不同的地方使用。
在0.7.48后,緩存遵循后端的”expires”, “cache-control: no-cache”, “cache-control: max-age=xxx”頭部字段,0.7.66版本以后,”cache-control:“private”和”no-store”頭同樣被遵循。nginx在緩存過程中不會處理”vary”頭,為了確保一些私有數(shù)據(jù)不被所有的用戶看到,后端必須設置 “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設置為off,緩存不會生效。
proxy_cache_valid
語法:proxy_cache_valid reply_code [reply_code …] time;
默認值:none
使用字段:http, server, location
為不同的應答設置不同的緩存時間,例如:
proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;
為應答代碼為200和302的設置緩存時間為10分鐘,404代碼緩存1分鐘。
如果只定義時間:
proxy_cache_valid 5m;
那么只對代碼為200, 301和302的應答進行緩存。
同樣可以使用any參數(shù)任何應答。
proxy_cache_valid 200 302 10m; proxy_cache_valid 301 1h; proxy_cache_valid any 1m;
2.定義一個簡單nginx緩存服務器
[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.下面我們來測試一下(谷歌瀏覽器)

注,大家用谷歌瀏覽器測試的時候,可以按f12調用開發(fā)工具,選擇network選項,我們可以看到,response headers,在這里我們可以看到,我們請求的是否是緩存,但現(xiàn)在還看不到,下面我們來配置一下,再來測試。
6. 緩存變量說明
$server_addr
服務器地址,在完成一次系統(tǒng)調用后可以確定這個值,如果要繞開系統(tǒng)調用,則必須在listen中指定地址并且使用bind參數(shù)。
$upstream_cache_status
0.8.3版本中其值可能為:
miss 未命中
expired - expired。請求被傳送到后端。
updating - expired。由于proxy/fastcgi_cache_use_stale正在更新,將使用舊的應答。
stale - expired。由于proxy/fastcgi_cache_use_stale,后端將得到過期的應答。
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.測試一下

注,從圖中我們可以看到,我們訪問的服務器是192.168.18.208,緩存命中。大家可以看到是不是很直觀啊。下面我們看一下緩存目錄。
9.查看一下緩存目錄
[root@nginx ~]# cd /data/nginx/cache/webserver/f/63/ [root@nginx 63]# ls 681ad4c77694b65d61c9985553a2763f
注,緩存目錄里確實有緩存文件。
關于“nginx頁面緩存怎么配置”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“nginx頁面緩存怎么配置”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當前文章:nginx頁面緩存怎么配置
標題鏈接:http://www.yijiale78.com/article14/ihojge.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站營銷、外貿網(wǎng)站建設、小程序開發(fā)、定制開發(fā)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)