最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx緩存&優(yōu)雅清除緩存問題

 更新時間:2025年03月05日 09:53:32   作者:fkjavaer  
本文詳細(xì)介紹了Nginx的緩存配置,包括緩存文件的存儲路徑、緩存的有效期、哪些請求走緩存、哪些請求不緩存,以及如何刪除緩存,同時,還提供了一個綜合案例來說明如何配置和使用Nginx緩存

1.Nginx緩存

前面我們知道Nginx可以對瀏覽器緩存進(jìn)行配置,讓一些靜態(tài)資源緩存到用戶本地存儲,以提高頁面的響應(yīng)速度,也能降低服務(wù)端的壓力。

瀏覽器執(zhí)行緩存的流程如下:

試想一下,如果用戶主動清空了本地的瀏覽器緩存,那么是不是請求的壓力又來到了服務(wù)端,為此我們可以增加web緩存服務(wù)器,當(dāng)用戶本地緩存失效時,可以去web緩存服務(wù)器中獲取數(shù)據(jù),而不是直接將請求打到后端服務(wù)器。

Nginx就可以擔(dān)當(dāng)這樣的角色。其作為一個高性能的web服務(wù)器,同時也可以是一個緩存服務(wù)器。其為我們提供了ngx_http_proxy_module模塊,用來實現(xiàn)緩存功能。

官方文檔:

https://nginx.org/en/docs/http/ngx_http_proxy_module.html

Tips:緩存的資源也不是一成不變的,因此緩存也需要有更新的機(jī)制。

因此,對于Nginx的緩存主要圍繞以下幾點展開:

  • 緩存文件存放在哪兒
  • 緩存的有效期
  • 如何指定哪些請求走緩存,哪些請求不緩存
  • 如何刪除緩存

2.Nginx配置緩存

2.1 緩存文件存放在哪兒

  • proxy_cache:定義共享內(nèi)存區(qū)域的名稱。
  • proxy_cache_path:定義緩存的存儲路徑。

2.1.1 proxy_cache

  • 作用域:http, server, location
  • 語法:proxy_cache zone | off;
  • 默認(rèn)值:proxy_cache off;
  • zone:用于定義共享內(nèi)存區(qū)域的名稱。可以使用變量。此參數(shù)是proxy_cache_path 指令的基礎(chǔ)。
  • off:表示禁用緩存。

2.1.2 proxy_cache_path

  • 作用域:http
  • 語法:proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size];

該指令可以配置緩存的路徑,并設(shè)置相關(guān)的參數(shù)。

  • path:設(shè)置緩存的路徑。
  • levels:用于設(shè)置緩存的目錄結(jié)構(gòu),例如levels=1:2,意味著生成兩層目錄。該參數(shù)與proxy_cache_key 指令有關(guān),proxy_cache_key 的默認(rèn)值為$scheme$proxy_host$request_uri,然后將獲取到的值MD5加密,然后依次從末尾按照levels的設(shè)置取值來創(chuàng)建目錄。
  • keys_zone:其中nameproxy_cache定義的值。size表示共享內(nèi)存區(qū)域的大小。1M的內(nèi)存可以存儲大約8000個key。
  • inactive:指定緩存失效的時間,如果在該段時間內(nèi),緩存文件沒被訪問,緩存將被刪除。
  • max_size:指定最大的緩存大小,當(dāng)超出大小,會根據(jù)LRU算法,刪除最近最少使用的數(shù)據(jù)。

2.2 緩存有效期

2.2.1 proxy_cache_valid

該指令可以設(shè)置不同響應(yīng)碼對應(yīng)的緩存時間,超過時間緩存就會過期,但是不會刪除緩存。

  • 作用域:http, server, location
  • 語法:proxy_cache_valid [code …] time;

前面我們在配置proxy_cache_path指令時,inactive參數(shù)可以指定一定時間內(nèi)緩存未被訪問就會被刪除。而proxy_cache_valid指定的是緩存的過期時間,超過該時間緩存將會過期,但是不會被刪除。

因此我們在配置的時候,一般inactive的值會大于proxy_cache_valid中的值,否則將會導(dǎo)致緩存還不過期就被刪除了。

  • 不指定響應(yīng)碼,則只對200、301和302進(jìn)行緩存。
proxy_cache_valid 10m;
  • 對指定響應(yīng)碼進(jìn)行緩存。
proxy_cache_valid 200 301 10m;
  • 對任何響應(yīng)碼進(jìn)行緩存。
proxy_cache_valid any 10m;

2.3 如何指定哪些請求走緩存,哪些請求不緩存

2.3.1 proxy_cache_bypass

該指令配置不走緩存響應(yīng)的條件,如果條件命中,則不走緩存??膳cproxy_no_cache配合使用。

  • 作用域:http, server, location
  • 語法:proxy_cache_bypass string …;

如果參數(shù)中的值至少有一個值不為空且不為"0",則不走緩存響應(yīng)。

# 以$arg開頭的參數(shù)表示url中的對應(yīng)的參數(shù)。
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;

2.3.2 proxy_no_cache

該指令配置不緩存響應(yīng)的條件,如果條件命中,則不緩存??膳cproxy_cache_bypass配合使用。

  • 作用域:http, server, location
  • 語法:proxy_no_cache string …;

如果參數(shù)中的值至少有一個值不為空且不為"0",則不緩存響應(yīng)。

# 以$arg開頭的參數(shù)表示url中的對應(yīng)的參數(shù)。
proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;

2.3.3 proxy_cache_min_uses

該指令設(shè)置某個請求達(dá)到指定次數(shù)后,才對其進(jìn)行緩存。

  • 作用域:http, server, location
  • 語法:proxy_cache_min_uses number;
  • 默認(rèn)值:proxy_cache_min_uses 1;

2.4 綜合案例

1)環(huán)境

  • Nginx緩存服務(wù)器:192.168.110.101
  • 服務(wù)端:192.168.110.100

2)配置

Nginx緩存服務(wù)器配置:

$upstream_cache_status為緩存命中狀態(tài)。狀態(tài)值分別為MISS、BYPASSEXPIRED、STALE、UPDATING、REVALIDATEDHIT.

http {
	# 緩存在10分鐘之內(nèi)未被訪問即刪除
	proxy_cache_path /home/stone/proxy_cache levels=1:2 keys_zone=my_cache:10M inactive=10m max_size=10G;
	server {
		listen       80;
		server_name  localhost;

        location /cache {
            proxy_cache my_cache;
            proxy_cache_key $uri$is_args$args;
            # 緩存的有效期會10s
            proxy_cache_valid any 10s;
            proxy_cache_min_uses 1;
            # 添加緩存命中狀態(tài),$upstream_cache_status
            add_header Nginx-Cache $upstream_cache_status;
            proxy_pass http://192.168.110.100;
        }
	}
}

服務(wù)端配置:

同時在html文件夾下創(chuàng)建cache文件,并放入test.html文件。

http {
	server {
		listen 80;
		server_name localhost;
		location /cache {
			root html;
		}
	}
}

3)訪問http://192.168.110.101/cache/test.html

第一次訪問:緩存狀態(tài)為MISS,即未命中。

第二次訪問:緩存狀態(tài)為HIT,即已命中緩存。

查看緩存文件夾,已經(jīng)按照levels參數(shù)指定的規(guī)則生成目錄結(jié)構(gòu),并緩存文件。

第三次訪問:緩存狀態(tài)為EXPIRED,緩存已過期,因為我們設(shè)置的10s過期。

3.Nginx刪除緩存

如果服務(wù)端的文件發(fā)生變化,那么也需要將文件同步到Nginx的緩存中去,因此我們需要對緩存進(jìn)行刪除。

  • 刪除對應(yīng)緩存目錄:這種方式看上去簡單粗暴,但是想要刪除指定的緩存,則猶如大海撈針。
  • ngx_cache_purge:第三方模塊,通過請求刪除指定的緩存文件。

3.1 刪除對應(yīng)的緩存目錄

rm -rf /home/stone/proxy_cache

3.2 ngx_cache_purge

我們可以借助第三方模塊ngx_cache_purge來實現(xiàn)對指定緩存的刪除。

下載地址:https://github.com/FRiCKLE/ngx_cache_purge/archive/refs/heads/master.zip

  • 作用域:location
  • 語法:proxy_cache_purge keys_zone key;
  • keys_zone:該參數(shù)為proxy_cache指令指定的值。
  • key:該參數(shù)為proxy_cache_key指定的值。

配置示例:

server {
	listen       80;
	server_name  localhost;

	location /cache {
		proxy_cache my_cache;
		# 設(shè)置proxy_cache_key
		proxy_cache_key $uri$is_args$args;
		proxy_cache_valid 200 302 10s;
		# 添加緩存命中狀態(tài)
		add_header Nginx-Cache $upstream_cache_status;
		proxy_pass http://192.168.110.100;
	}

	# 刪除指定緩存
	location ~/purge(/.*) {
		proxy_cache_purge my_cache $1$is_args$args;
	}
}

1)訪問http://192.168.110.101/cache/test.html,產(chǎn)生緩存。

2)訪問http://192.168.110.101/purge/cache/test.html,如下圖表示刪除緩存成功。

總結(jié)

以上就是Nginx實現(xiàn)負(fù)載均衡的全部內(nèi)容,Nginx是多模塊化的,還有很多高級功能,我們后面繼續(xù)探索。

這些僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • nginx反向代理踩坑實戰(zhàn)記錄(容器方式)

    nginx反向代理踩坑實戰(zhàn)記錄(容器方式)

    Nginx是一個高性能的HTTP和反向代理web服務(wù)器,同時也提供了IMAP/POP3/SMTP服務(wù),下面這篇文章主要給大家介紹了關(guān)于nginx反向代理踩坑(容器方式)的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • nginx?openresty?快速入門指南

    nginx?openresty?快速入門指南

    OpenResty是基于Nginx與Lua?的高性能Web平臺,其**內(nèi)部集成了大量精良的?Lua?庫、第三方模塊以及大多數(shù)的依賴項,**用于方便地搭建能夠處理超高并發(fā)、擴(kuò)展性極高的動態(tài)?Web?應(yīng)用、Web?服務(wù)和動態(tài)網(wǎng)關(guān),這篇文章主要介紹了nginx?openresty?快速入門指南,需要的朋友可以參考下
    2024-02-02
  • Nginx批量添加二級子域名完美方案

    Nginx批量添加二級子域名完美方案

    這篇文章主要介紹了Nginx批量添加二級子域名完美方案,本文講解使用正則表達(dá)式批量匹配指定域名的二級域名虛擬主機(jī),需要的朋友可以參考下
    2015-04-04
  • Nginx?反向代理緩存(proxy_cache)的實現(xiàn)

    Nginx?反向代理緩存(proxy_cache)的實現(xiàn)

    Nginx的緩存加速功能是由proxy_cache和fastcgi_cache兩個功能模塊完成,本文主要介紹了Nginx?反向代理緩存(proxy_cache)的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • Nginx中l(wèi)imit_req模塊和limit_conn模塊的使用

    Nginx中l(wèi)imit_req模塊和limit_conn模塊的使用

    本文主要介紹了Nginx中l(wèi)imit_req模塊和limit_conn模塊的使用,通過limit_req和limit_conn模塊,可以有效實現(xiàn)精確的請求頻率和連接數(shù)控制,下面就來具體介紹一下
    2024-05-05
  • Linux下給nginx安裝waf模塊

    Linux下給nginx安裝waf模塊

    ngx_lua_waf是一個基于ngx_lua的web應(yīng)用防火墻。代碼很簡單,開發(fā)初衷主要是使用簡單,高性能和輕量級。下面我們來看看如何在為nginx安裝waf模塊
    2016-08-08
  • 在Nginx服務(wù)器上配置Google反向代理的基本方法

    在Nginx服務(wù)器上配置Google反向代理的基本方法

    這篇文章主要介紹了在Nginx服務(wù)器上配置Google反向代理的基本方法,文中使用到了SSL來加密反向代理,需要的朋友可以參考下
    2015-12-12
  • 定期刪除OpenResty/Nginx大日志文件的方法

    定期刪除OpenResty/Nginx大日志文件的方法

    這篇文章主要介紹了定期刪除OpenResty/Nginx大日志文件的方法,文中通過代碼示例給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • 504?Gateway?Timeout網(wǎng)關(guān)超時詳細(xì)解決方法

    504?Gateway?Timeout網(wǎng)關(guān)超時詳細(xì)解決方法

    這篇文章主要介紹了504?Gateway?Timeout網(wǎng)關(guān)超時詳細(xì)解決方法的相關(guān)資料,504GatewayTimeout是HTTP狀態(tài)碼,表示網(wǎng)關(guān)或代理服務(wù)器在等待上游服務(wù)器響應(yīng)時超時,常見觸發(fā)場景包括Nginx超時、后端性能問題、網(wǎng)絡(luò)延遲和服務(wù)器資源耗盡,需要的朋友可以參考下
    2025-02-02
  • Nginx之upstream被動式重試機(jī)制的實現(xiàn)

    Nginx之upstream被動式重試機(jī)制的實現(xiàn)

    本文主要介紹了Nginx之upstream被動式重試機(jī)制的實現(xiàn),可以通過proxy_next_upstream來自定義配置,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03

最新評論

绥棱县| 浠水县| 大庆市| 岑溪市| 台中市| 聊城市| 忻城县| 象州县| 奇台县| 耿马| 昔阳县| 朝阳区| 岳西县| 吴桥县| 定日县| 娱乐| 乐至县| 阳朔县| 清新县| 建昌县| 乌鲁木齐县| 玉树县| 汉中市| 五大连池市| 西丰县| 甘洛县| 松溪县| 邵武市| 乌拉特前旗| 太和县| 沙坪坝区| 洪雅县| 虹口区| 河津市| 云梦县| 同德县| 昌平区| 木兰县| 孟州市| 渝中区| 鹰潭市|