大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 Nginx緩存內(nèi)容

Nginx緩存內(nèi)容

更新時(shí)間:2021-09-22 10:53:33 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1300次

緩存來(lái)自代理的Web和應(yīng)用程序服務(wù)器的靜態(tài)和動(dòng)態(tài)內(nèi)容,以加快向客戶端的交付速度并減少服務(wù)器上的負(fù)載。

概述

啟用緩存后,NGINX Plus 將響應(yīng)保存在磁盤緩存中,并使用它們來(lái)響應(yīng)客戶端,而不必每次都代理對(duì)相同內(nèi)容的請(qǐng)求。

要了解有關(guān) NGINX Plus 緩存功能的更多信息,請(qǐng)按需觀看NGINX內(nèi)容緩存網(wǎng)絡(luò)研討會(huì),并深入了解動(dòng)態(tài)內(nèi)容緩存 、緩存清除和延遲緩存等功能。

啟用響應(yīng)緩存

要啟用緩存,請(qǐng)proxy_cache_path 在頂級(jí)http {}上下文中包含該指令。第一個(gè)強(qiáng)制參數(shù)是緩存內(nèi)容的本地文件系統(tǒng)路徑,強(qiáng)制keys_zone參數(shù)定義用于存儲(chǔ)有關(guān)緩存項(xiàng)的元數(shù)據(jù)的共享內(nèi)存區(qū)域的名稱和大小:

http {
    # ...
    proxy_cache_path /data/nginx/cache keys_zone=one:10m;
}

然后proxy_cache 在要緩存服務(wù)器響應(yīng)的上下文(協(xié)議類型、虛擬服務(wù)器或位置)中包含指令,指定由指令的keys_zone參數(shù)定義的區(qū)域名稱proxy_cache_path(在本例中為one):

http {
    # ...
    proxy_cache_path /data/nginx/cache keys_zone=one:10m;
    server {
        proxy_cache mycache;
        location / {
            proxy_pass http://localhost:8000;
        }
    }
}

請(qǐng)注意,該keys_zone參數(shù)定義的大小不限制緩存響應(yīng)數(shù)據(jù)的總量。緩存的響應(yīng)本身與文件系統(tǒng)上特定文件中的元數(shù)據(jù)副本一起存儲(chǔ)。要限制緩存響應(yīng)數(shù)據(jù)的數(shù)量,請(qǐng)將max_size參數(shù)包含在proxy_cache_path 指令中。(但請(qǐng)注意,緩存數(shù)據(jù)量可能會(huì)暫時(shí)超過(guò)此限制,如下一節(jié)所述。)

涉及緩存的 NGINX 進(jìn)程

有兩個(gè)額外的 NGINX 進(jìn)程參與緩存:

該高速緩存管理器周期性地起動(dòng),檢查高速緩存的狀態(tài)。如果緩存大小超過(guò) 指令的max_size參數(shù)設(shè)置的限制proxy_cache_path,緩存管理器將刪除最近最少訪問(wèn)的數(shù)據(jù)。如前所述,在緩存管理器激活之間的時(shí)間內(nèi),緩存數(shù)據(jù)量可能會(huì)暫時(shí)超過(guò)限制。

該緩存加載器只運(yùn)行一次,NGINX開始之后。它將有關(guān)先前緩存數(shù)據(jù)的元數(shù)據(jù)加載到共享內(nèi)存區(qū)域。在啟動(dòng)后的最初幾分鐘內(nèi),一次加載整個(gè)緩存可能會(huì)消耗足夠的資源來(lái)降低 NGINX 的性能。為避免這種情況,請(qǐng)通過(guò)在proxy_cache_path 指令中包含以下參數(shù)來(lái)配置緩存的迭代加載:

loader_threshold– 迭代的持續(xù)時(shí)間,以毫秒為單位(默認(rèn)情況下,200)

loader_files– 一次迭代期間加載的最大項(xiàng)目數(shù)(默認(rèn)為100)

loader_sleeps– 迭代之間的延遲,以毫秒為單位(默認(rèn)情況下,50)

在以下示例中,迭代持續(xù)300幾毫秒或直到200項(xiàng)目加載完畢:

proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200;

指定要緩存的請(qǐng)求

默認(rèn)情況下,NGINX Plus 緩存第一次從代理服務(wù)器收到此類響應(yīng)時(shí),對(duì)使用 HTTPGET和HEAD方法發(fā)出的請(qǐng)求的所有響應(yīng)。作為請(qǐng)求的密鑰(標(biāo)識(shí)符),NGINX Plus 使用請(qǐng)求字符串。如果請(qǐng)求與緩存響應(yīng)具有相同的鍵,NGINX Plus 將緩存響應(yīng)發(fā)送到客戶端。您可以在不同的指令http {},server {}或location {}上下文來(lái)控制其響應(yīng)緩存。

要更改用于計(jì)算密鑰的請(qǐng)求特征,請(qǐng)包含以下proxy_cache_key 指令:

proxy_cache_key "$host$request_uri$cookie_user";

要定義在緩存響應(yīng)之前必須發(fā)出具有相同鍵的請(qǐng)求的最小次數(shù),請(qǐng)包含proxy_cache_min_uses 指令:

proxy_cache_min_uses 5;

要使用GETand以外的方法緩存對(duì)請(qǐng)求的響應(yīng)HEAD,請(qǐng)將它們與GET和HEAD作為proxy_cache_methods 指令的參數(shù)一起列出:

proxy_cache_methods GET HEAD POST;

限制或禁用緩存

默認(rèn)情況下,響應(yīng)會(huì)無(wú)限期地保留在緩存中。僅當(dāng)緩存超過(guò)最大配置大小時(shí)才會(huì)刪除它們,然后按自上次請(qǐng)求以來(lái)的時(shí)間長(zhǎng)度排序。您可以設(shè)置多長(zhǎng)時(shí)間緩存的響應(yīng)被認(rèn)為是有效的,甚至他們是否在所有使用,通過(guò)在指示http {},server {}或location {}上下文:

要限制具有特定狀態(tài)代碼的緩存響應(yīng)被視為有效的時(shí)間,請(qǐng)包含以下proxy_cache_valid 指令:

proxy_cache_valid 200 302 10m;
proxy_cache_valid 404      1m;

在本例中,帶有代碼200或的響應(yīng)302被認(rèn)為在 10 分鐘404內(nèi)有效,帶有代碼的響應(yīng)在 1 分鐘內(nèi)有效。要為具有所有狀態(tài)代碼的響應(yīng)定義有效時(shí)間,請(qǐng)指定any為第一個(gè)參數(shù):

proxy_cache_valid any 5m;

要定義 NGINX Plus 不向客戶端發(fā)送緩存響應(yīng)的條件,請(qǐng)包含該proxy_cache_bypass 指令。每個(gè)參數(shù)定義一個(gè)條件并由多個(gè)變量組成。如果至少有一個(gè)參數(shù)不為空且不等于“ 0”(零),NGINX Plus 不會(huì)在緩存中查找響應(yīng),而是立即將請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器。

proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;

要定義 NGINX Plus 根本不緩存響應(yīng)的條件,請(qǐng)包含proxy_no_cache 指令,以與proxy_cache_bypass指令相同的方式定義參數(shù)。

proxy_no_cache $http_pragma $http_authorization;

從緩存中清除內(nèi)容

NGINX 可以從緩存中刪除過(guò)時(shí)的緩存文件。這對(duì)于刪除過(guò)時(shí)的緩存內(nèi)容以防止同時(shí)提供新舊版本的網(wǎng)頁(yè)是必要的。收到包含自定義 HTTP 標(biāo)頭或 HTTPPURGE方法的特殊“清除”請(qǐng)求時(shí),將清除緩存。

配置緩存清除

讓我們?cè)O(shè)置一個(gè)配置來(lái)識(shí)別使用 HTTPPURGE方法的請(qǐng)求并刪除匹配的 URL。

在http {}上下文中,創(chuàng)建一個(gè)$purge_method取決于變量的新變量,例如$request_method:

http {
    # ...
    map $request_method $purge_method {
        PURGE 1;
        default 0;
    }
}

在location {}配置緩存的塊中,包含proxy_cache_purge 指令以指定緩存清除請(qǐng)求的條件。在我們的示例中,它是$purge_method在上一步中配置的:

server {
    listen      80;
    server_name www.example.com;
    location / {
        proxy_pass  https://localhost:8002;
        proxy_cache mycache;
        proxy_cache_purge $purge_method;
    }
}

發(fā)送清除命令

當(dāng)proxy_cache_purge指令配置,你需要發(fā)送一個(gè)特殊的緩存清除請(qǐng)求清除緩存。您可以使用一系列工具發(fā)出清除請(qǐng)求,包括curl本示例中的命令:

$ curl -X PURGE -D – "https://www.example.com/*"
HTTP/1.1 204 No Content
Server: nginx/1.15.0
Date: Sat, 19 May 2018 16:33:04 GMT
Connection: keep-alive

在示例中,具有公共 URL 部分(由星號(hào)通配符指定)的資源被清除。但是,此類緩存條目不會(huì)完全從緩存中刪除:它們保留在磁盤上,直到它們因不活動(dòng)(由 指令的inactive參數(shù)確定proxy_cache_path)或緩存清除器(使用purger 參數(shù) to啟用proxy_cache_path)或客戶端而被刪除嘗試訪問(wèn)它們。

限制對(duì)清除命令的訪問(wèn)

我們建議您限制允許發(fā)送緩存清除請(qǐng)求的 IP 地址數(shù)量:

geo $purge_allowed {
   default         0;  # deny from other
   10.0.0.1        1;  # allow from 10.0.0.1 address
   192.168.0.0/24  1;  # allow from 192.168.0.0/24
}
map $request_method $purge_method {
   PURGE   $purge_allowed;
   default 0;
}

在這個(gè)例子中,NGINX 檢查該P(yáng)URGE方法是否在請(qǐng)求中使用,如果是,則分析客戶端 IP 地址。如果 IP 地址被列入白名單,則$purge_method設(shè)置為$purge_allowed:1允許清除,并0拒絕它。

從緩存中完全刪除文件

要完全刪除與星號(hào)匹配的緩存文件,請(qǐng)激活一個(gè)特殊cache purger過(guò)程,該過(guò)程會(huì)永久迭代所有緩存條目并刪除與通配符鍵匹配的條目。 在上下文中包含指令的purger 參數(shù):proxy_cache_pathhttp {}

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m purger=on;

緩存清除配置示例

http {
    # ...
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m purger=on;
    map $request_method $purge_method {
        PURGE 1;
        default 0;
    }
    server {
        listen      80;
        server_name www.example.com;
        location / {
            proxy_pass        https://localhost:8002;
            proxy_cache       mycache;
            proxy_cache_purge $purge_method;
        }
    }
    geo $purge_allowed {
       default         0;
       10.0.0.1        1;
       192.168.0.0/24  1;
    }
    map $request_method $purge_method {
       PURGE   $purge_allowed;
       default 0;
    }
}

字節(jié)范圍緩存

初始緩存填充操作有時(shí)需要相當(dāng)長(zhǎng)的時(shí)間,尤其是對(duì)于大文件。例如,當(dāng)一個(gè)視頻文件開始下載以滿足部分文件的初始請(qǐng)求時(shí),后續(xù)請(qǐng)求必須等待整個(gè)文件下載并放入緩存中。

NGINX 可以緩存此類范圍請(qǐng)求,并使用Cache Slice 模塊逐漸填充緩存,該模塊將文件劃分為更小的“切片”。每個(gè)范圍請(qǐng)求選擇覆蓋所請(qǐng)求范圍的特定切片,如果該范圍仍未緩存,則將其放入緩存中。對(duì)這些切片的所有其他請(qǐng)求都從緩存中獲取數(shù)據(jù)。

要啟用字節(jié)范圍緩存:

確保 NGINX 是使用緩存切片 模塊編譯的。

使用slice 指令指定切片的大小:

location / {
    slice  1m;
}

選擇使切片下載速度更快的切片大小。如果大小太小,可能會(huì)導(dǎo)致內(nèi)存使用過(guò)多,處理請(qǐng)求時(shí)會(huì)打開大量文件描述符,而過(guò)大可能會(huì)導(dǎo)致延遲。

將$slice_range 變量包含到緩存鍵中:

proxy_cache_key $uri$is_args$args$slice_range;

使用206狀態(tài)代碼啟用響應(yīng)緩存:

proxy_cache_valid 200 206 1h;

通過(guò)$slice_range 在Range標(biāo)頭字段中設(shè)置變量來(lái)啟用范圍請(qǐng)求到代理服務(wù)器的傳遞:

proxy_set_header  Range $slice_range;

這是完整的配置:

location / {
    slice             1m;
    proxy_cache       cache;
    proxy_cache_key   $uri$is_args$args$slice_range;
    proxy_set_header  Range $slice_range;
    proxy_cache_valid 200 206 1h;
    proxy_pass        http://localhost:8000;
}

請(qǐng)注意,如果打開切片緩存,則不得更改初始文件。

組合配置示例

以下示例配置結(jié)合了上述一些緩存選項(xiàng)。

http {
    # ...
    proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 
                     loader_files=200 max_size=200m;
    server {
        listen 8080;
        proxy_cache mycache;
        location / {
            proxy_pass http://backend1;
        }
        location /some/path {
            proxy_pass http://backend2;
            proxy_cache_valid any 1m;
            proxy_cache_min_uses 3;
            proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
        }
    }
}

在此示例中,兩個(gè)位置使用相同的緩存,但方式不同。

因?yàn)轫憫?yīng)backend1很少改變,所以不包含緩存控制指令。響應(yīng)在第一次發(fā)出請(qǐng)求時(shí)被緩存,并且無(wú)限期地保持有效。

相比之下,對(duì)請(qǐng)求服務(wù)的響應(yīng)backend2頻繁更改,因此它們僅在 1 分鐘內(nèi)有效,并且在發(fā)出 3 次相同請(qǐng)求之前不會(huì)被緩存。此外,如果請(qǐng)求與proxy_cache_bypass指令定義的條件匹配,NGINX Plus 會(huì)立即將請(qǐng)求傳遞給 ,backend2而無(wú)需在緩存中查找相應(yīng)的響應(yīng)。

動(dòng)力節(jié)點(diǎn)Java在線學(xué)習(xí)中有更多關(guān)于Java的知識(shí)點(diǎn),針對(duì)沒(méi)有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識(shí),讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 天天色天天草 | 四虎影院永久在线观看 | 亚洲成色999久久网站 | 日本亚欧乱色视频在线网站 | 青青青青青青久久久免费观看 | 亚洲一区二区三区在线免费观看 | 爱搞逼综合网 | 精品综合久久久久97 | 国产激情一级毛片久久久 | 99热久久这里只有精品99 | 国产v欧美v日本v精品 | 欧美狠狠入鲁的视频极速 | 中文字幕久热 | 日本激情视频一区二区三区 | 亚洲欧美日本一区 | 精品免费看 | 欧美做爰xxxⅹ性欧 欧美做爰xxxⅹ在线视频hd | 高清一区二区三区免费 | 亚洲成a人v在线观看 | 九九精品在线视频 | 色综合久久88一加勒比 | 全部免费毛片在线 | 成人免费久久精品国产片久久影院 | 无夜精品久久久久久 | 精品国产一区二区三区久久影院 | 日韩伦理亚洲欧美在线一区 | 国产自产拍精品视频免费看 | 国产成人精品午夜在线播放 | 四虎影视永久免费观看地址 | 久色中文| 午夜在线网站 | 色一色综合 | 国产亚洲人成a在线v网站 | 羞羞色男人的天堂伊人久久 | 久久影院在线 | 91视频香蕉视频 | 午夜精品久久久久久久第一页 | 十大黄色免费网站 | 久久99热成人精品国产 | 欧美孕妇乱大交xxxxx | 日韩xx00|