nginx配置文件不使用緩存的方法
前言
使用緩存的優(yōu)點(diǎn)在于減少數(shù)據(jù)傳輸,節(jié)省網(wǎng)絡(luò)流量,加快響應(yīng)速度;減輕服務(wù)器壓力;提供服務(wù)端的高可用性;缺點(diǎn)在于數(shù)據(jù)的不一致問(wèn)題;增加成本
Nginx作為Web緩存服務(wù)器,介于客戶端和應(yīng)用服務(wù)器之間,當(dāng)用戶通過(guò)瀏覽器訪問(wèn)一個(gè)URL時(shí),web緩存服務(wù)器會(huì)去應(yīng)用服務(wù)器獲取要展示給用戶的內(nèi)容,將內(nèi)容緩存到自己的服務(wù)器上,當(dāng)下一次請(qǐng)求到來(lái)時(shí),如果訪問(wèn)的是同一個(gè)URL,web緩存服務(wù)器就會(huì)直接將之前緩存的內(nèi)容返回給客戶端
1. web緩存服務(wù)
1.1 原理
Nginx的web緩存服務(wù)主要是使用ngx_http_proxy_module模塊,其基于Proxy Store來(lái)實(shí)現(xiàn),其原理是把URL及相關(guān)組合當(dāng)做Key,在使用MD5算法對(duì)Key進(jìn)行哈希,得到硬盤(pán)上對(duì)應(yīng)的哈希目錄路徑,從而將緩存內(nèi)容保存在該目錄中。它可以支持任意URL連接,同時(shí)也支持404/301/302這樣的非200狀態(tài)碼。Nginx即可以支持對(duì)指定URL或者狀態(tài)碼設(shè)置過(guò)期時(shí)間,也可以使用purge命令來(lái)手動(dòng)清除指定URL的緩存
1.2 指令
1.2.1 proxy_cache_path
語(yǔ)法:
proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time][max_size=size];
- path:緩存路徑地址
- levels: 指定該緩存空間對(duì)應(yīng)的目錄,最多可以設(shè)置3層,每層取值為1|2(MD5加密后的密文從后往前取值1到2個(gè)字符)
- keys_zone:用來(lái)為這個(gè)緩存區(qū)設(shè)置名稱和指定大小
- inactive:指定緩存的數(shù)據(jù)多次時(shí)間未被訪問(wèn)就將被刪除
- max_size:設(shè)置最大緩存空間,如果緩存空間存滿,默認(rèn)會(huì)覆蓋緩存時(shí)間最長(zhǎng)的資源
實(shí)例:
http {
proxy_cache_path /usr/local/proxy_cache keys_zone=cz:200m levels=1:2:1 inactive=1d max_size=20g;
}1.2.2 proxy_cache
開(kāi)啟或關(guān)閉代理緩存,如果是開(kāi)啟則自定使用哪個(gè)緩存區(qū)來(lái)進(jìn)行緩存
1.2.3 proxy_cache_key
設(shè)置web緩存的key值,Nginx會(huì)根據(jù)key值MD5哈希存緩存
1.2.4 proxy_cache_valid
對(duì)不同返回狀態(tài)碼的URL設(shè)置不同的緩存時(shí)間
1.2.5 proxy_cache_min_uses
設(shè)置資源被訪問(wèn)多少次后被緩存
1.2.6 proxy_cache_methods
設(shè)置緩存哪些HTTP方法
2. 緩存案例
在http塊中設(shè)置
proxy_cache_path /usr/local/proxy_cache keys_zone=cz:200m levels=1:2:1 inactive=1d max_size=20g;
server {
listen 12305;
location ~* .\.(png|jpg|css|html|js)$ {
proxy_cache cz;
proxy_cache_key $scheme$proxy_host$request_uri;
proxy_cache_min_uses 1;
proxy_cache_valid 200 1d;
proxy_cache_valid any 1m;
add_header nginx-cache "$upstream_cache_status";
proxy_pass http://172.18.25.50:12306;
}
}
server {
listen 12306;
location ^~ /bdosp {
alias /mnt/disk1/home/ZLQ_YL/myUI/bdops_ui/bdopsDist/bdosp;
index index.html index.htm;
}
}3. 緩存的清除
3.1 刪除對(duì)應(yīng)的緩存目錄
rm -rf /usr/local/proxy_cache
3.2 使用第三方擴(kuò)展模塊ngx_cache_purge,并使用proxy_cache_purge指令
4. 設(shè)置資源不緩存
4.1 proxy_no_cache
定義不將數(shù)據(jù)進(jìn)行緩存的條件
示例:
proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
4.2 proxy_cache_bypass
設(shè)置不從緩存中獲取數(shù)據(jù)的條件
示例:
proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
$cookie_nocache指當(dāng)前請(qǐng)求的cookie中鍵的名稱為nocache對(duì)應(yīng)的值
$arg_nocache和$arg_comment指的是當(dāng)前請(qǐng)求的參數(shù)中屬性名為nocache和comment對(duì)應(yīng)的屬性值
至少有一個(gè)不為空且不等于0,則條件滿足成立
4.3 設(shè)置不緩存資源的配置方案
server{
listen 8080;
server_name localhost;
location / {
if ($request_uri ~ /.*\.js$){
set $nocache 1;
}
proxy_no_cache $nocache $cookie_nocache $arg_nocache $arg_comment;
proxy_cache_bypass $nocache $cookie_nocache $arg_nocache $arg_comment;
}
}
到此這篇關(guān)于nginx配置文件不使用緩存的方法的文章就介紹到這了,更多相關(guān)nginx 文件不使用緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx+php的新基礎(chǔ)鏡像制作全過(guò)程
這篇文章主要介紹了基于alpine基礎(chǔ)鏡像,構(gòu)建含nginx、php服務(wù)的新基礎(chǔ)鏡像的過(guò)程,文中通過(guò)代碼示例和圖文結(jié)合的方式介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-03-03
nginx控制連接數(shù)及訪問(wèn)速率的實(shí)現(xiàn)
本文主要介紹了Nginx中ngx_http_limit_conn_module和ngx_http_limit_req_module模塊的使用,用于控制連接數(shù)和請(qǐng)求速率,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12
Nginx+Windows搭建域名訪問(wèn)環(huán)境的操作方法
這篇文章主要介紹了Nginx搭建域名訪問(wèn)環(huán)境,包括nginx配置文件的相關(guān)介紹及對(duì)nginx配置文件的分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
nginx反向代理二級(jí)域名綁定方法及注意事項(xiàng)
本文介紹了利用nginx實(shí)現(xiàn)多域名和多站點(diǎn)的綁定的方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-04-04

