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

Nginx代理緩存靜態(tài)資源的實(shí)現(xiàn)方法

 更新時(shí)間:2025年08月25日 09:42:05   作者:北葦渡江  
本文主要介紹了Nginx代理緩存靜態(tài)資源,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

問題描述

有兩臺(tái)服務(wù)器,一臺(tái)是外網(wǎng)的網(wǎng)關(guān)服務(wù)器,一臺(tái)是內(nèi)網(wǎng)的資源服務(wù)器,但是兩臺(tái)服務(wù)器距離很遠(yuǎn)(跨?。?,頁面中依賴大量插件資源,加載耗時(shí)久,本章重點(diǎn)講解Nginx代理緩存靜態(tài)資源。

解決思路

  • CDN
  • 開啟gzip壓縮
  • 圖片格式優(yōu)化,找到大圖片
  • 外網(wǎng)服務(wù)器進(jìn)行靜態(tài)資源緩存

proxy_cache工作原理

Nginx 的 proxy_cache 模塊允許 Nginx 作為反向代理服務(wù)器時(shí)緩存后端服務(wù)器的響應(yīng)。以下是 proxy_cache 模塊的工作原理:

  1. 請(qǐng)求到達(dá):客戶端向 Nginx 發(fā)送請(qǐng)求。
  2. 緩存查找:Nginx 首先檢查請(qǐng)求是否命中緩存。這是通過查找共享內(nèi)存中的緩存鍵(由 proxy_cache_key 定義)來完成的。
  3. 緩存命中:如果請(qǐng)求命中緩存,Nginx 直接從緩存中讀取響應(yīng)并返回給客戶端。
  4. 緩存未命中:如果請(qǐng)求未命中緩存,Nginx 將請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器。
  5. 后端響應(yīng):后端服務(wù)器處理請(qǐng)求并返回響應(yīng)給 Nginx。
  6. 緩存存儲(chǔ):Nginx 將后端服務(wù)器的響應(yīng)存儲(chǔ)在本地文件系統(tǒng)中,同時(shí)在共享內(nèi)存中更新緩存鍵和元數(shù)據(jù)。
  7. 返回響應(yīng):Nginx 將后端服務(wù)器的響應(yīng)返回給客戶端,并根據(jù) proxy_cache_valid 指令設(shè)置的規(guī)則決定緩存時(shí)間。

配置

# 設(shè)置日志格式,$upstream_cache_status代表是否命中緩存
# $upstream_cache_status的返回值有7個(gè):
# HIT表示緩存命中
# MISS表示未命中,請(qǐng)求被傳送到后端
# EXPIRED表示緩存已經(jīng)過期,請(qǐng)求被傳送到后端
# UPDATING表示正在更新緩存,將使用舊的應(yīng)答
# STALE表示無法從后端服務(wù)器更新緩存時(shí),返回了舊的緩存內(nèi)容
# BYPASS表示緩存被繞過了
# REVALIDATED表示啟用proxy_cache_revalidate指令后,當(dāng)緩存內(nèi)容過期時(shí),Nginx通過一次If-Modified-Since的請(qǐng)求頭去驗(yàn)證緩存內(nèi)容是否過期,此時(shí)會(huì)返回該狀態(tài)
log_format  main  '$remote_addr - $remote_user [$request_time] [$time_local] "$request" '
                      '$upstream_cache_status '                      
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
# 打開日志格式化功能,如果這里不打開的話,上面的格式化不生效
access_log  logs/access.log  main;

# 設(shè)置緩存區(qū)信息
# levels:指定該緩存空間對(duì)應(yīng)的目錄,最多可以設(shè)置3層,每層取值為1|2;例如:levels=1:2   緩存空間有兩層目錄,第一次是1個(gè)字母,第二次是2個(gè)字母
proxy_cache_path /app/nginx/js_cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m;

# --------------以下為server中的配置---------------
location / {
	proxy_pass http://ip:端口;
}
# 啟用緩存
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ioc|ico|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|css|js)$ {
	proxy_pass http://ip:端口;
	proxy_cache my_cache;
	# proxy_cache_valid設(shè)置不同響應(yīng)碼的緩存過期時(shí)間
	# HTTP 206 Partial Content(部分內(nèi)容)狀態(tài)碼表示服務(wù)器成功處理了客戶端?請(qǐng)求資源部分內(nèi)容?的GET請(qǐng)求,主要應(yīng)用于支持范圍請(qǐng)求(Range Request)的場(chǎng)景,比如文件斷點(diǎn)下載
   	proxy_cache_valid 200 304 206 60m; # 緩存200, 304, 206響應(yīng)3600秒(1小時(shí))
   	proxy_cache_key $uri; # 緩存鍵的生成方式
    # add_header X-Cache '$upstream_cache_status from $host'; # 在請(qǐng)求的http響應(yīng)頭中返回,判斷是否命中緩存
}

proxy_cache_path與proxy_cache_valid中超時(shí)時(shí)間同時(shí)設(shè)置,生效控制問題

inactive時(shí)間到了,數(shù)據(jù)刪除。proxy_cache_valid時(shí)間到了不會(huì)被刪除,但是會(huì)認(rèn)為失效,再次請(qǐng)求時(shí)會(huì)重新下載。有請(qǐng)求,inactive就刷新計(jì)時(shí),valid不變。沒請(qǐng)求,inactive和valid都不變。
分析各種情況:

  1. inactive設(shè)置1m,valid設(shè)置1h
    首先,請(qǐng)求進(jìn)來,cache出現(xiàn),兩個(gè)時(shí)間開始倒計(jì)時(shí)。
    情況一:不斷請(qǐng)求這個(gè)cache,inactive不斷刷新1m倒計(jì)時(shí),直到到達(dá)1h,valid過期。這時(shí)你去請(qǐng)求了一次,nginx重新去讀取服務(wù)器數(shù)據(jù),刷新valid倒計(jì)時(shí)。期間數(shù)據(jù)一直在緩存里。不請(qǐng)求,就再過1m刪掉。
    情況二:兩次請(qǐng)求間隔超過了1min,inactive生效,刪除了這個(gè)cache數(shù)據(jù),沒了。你再請(qǐng)求,相當(dāng)于重新去服務(wù)器拿了一次數(shù)據(jù),inactive和valid倒計(jì)時(shí)都會(huì)重新刷新,不請(qǐng)求,cache里就沒有這份數(shù)據(jù)了

  2. inactive設(shè)置1m,valid設(shè)置1m
    首先,請(qǐng)求進(jìn)來,cache出現(xiàn),兩個(gè)時(shí)間開始倒計(jì)時(shí)。
    情況一:1m內(nèi)不請(qǐng)求,最后inactive生效刪掉。不請(qǐng)求就沒緩存了,請(qǐng)求了一次,重新從服務(wù)器讀取一份,兩個(gè)計(jì)時(shí)刷新。
    情況二:1m內(nèi)請(qǐng)求了一次,inactive時(shí)間刷新,但是valid還在計(jì)時(shí),所以1m到了后,緩存過期了。你再請(qǐng)求就重新從服務(wù)器讀取一份,刷新計(jì)時(shí)。不請(qǐng)求,就等待1m,由inactive生效刪除了緩存

  3. inactive設(shè)置1h,valid設(shè)置了1m
    首先,請(qǐng)求進(jìn)來,cache出現(xiàn),兩個(gè)時(shí)間開始倒計(jì)時(shí)。
    過了1m,緩存過期,數(shù)據(jù)在沒刪掉。不請(qǐng)求,直到1h到,inactive刪掉緩存。請(qǐng)求了一次,重新從服務(wù)器讀取,刷新兩個(gè)計(jì)時(shí)。

所以,通常inactive應(yīng)該需要設(shè)置的比valid中時(shí)間長,inactive和valid是配合使用,不是誰時(shí)間短覆蓋誰的關(guān)系。

緩存清理

清除緩存,直接刪除緩存文件夾,下次請(qǐng)求的時(shí)候會(huì)重新生成

外網(wǎng)緩存失敗,內(nèi)網(wǎng)不允許緩存

在生產(chǎn)環(huán)境出現(xiàn)過一個(gè)問題,在外網(wǎng)服務(wù)器nginx配置了緩存信息,日志配置生效,緩存目錄也生成,但是始終沒有生成緩存文件,最后排查發(fā)現(xiàn),在內(nèi)網(wǎng)的nginx配置了如下禁止緩存的信息,應(yīng)該將此段內(nèi)容從內(nèi)網(wǎng)服務(wù)器移到外網(wǎng)上或者使用proxy_ignore_headers

add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
add_header Pragma no-cache;
add_header Expires 0;

private:專用于個(gè)人的緩存,中間代理、CDN 等不能緩存此響應(yīng)
public:響應(yīng)可以被中間代理、CDN 等緩存

到此這篇關(guān)于Nginx代理緩存靜態(tài)資源的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Nginx代理緩存靜態(tài)資源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • windows下nginx的安裝使用及解決80端口被占用nginx不能啟動(dòng)的問題

    windows下nginx的安裝使用及解決80端口被占用nginx不能啟動(dòng)的問題

    這篇文章主要給大家介紹了關(guān)于windows下nginx的安裝使用,以及如何解決80端口被占用導(dǎo)致nginx不能啟動(dòng)的問題,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-04-04
  • 504?Gateway?Timeout網(wǎng)關(guān)超時(shí)詳細(xì)解決方法

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

    這篇文章主要介紹了504?Gateway?Timeout網(wǎng)關(guān)超時(shí)詳細(xì)解決方法的相關(guān)資料,504GatewayTimeout是HTTP狀態(tài)碼,表示網(wǎng)關(guān)或代理服務(wù)器在等待上游服務(wù)器響應(yīng)時(shí)超時(shí),常見觸發(fā)場(chǎng)景包括Nginx超時(shí)、后端性能問題、網(wǎng)絡(luò)延遲和服務(wù)器資源耗盡,需要的朋友可以參考下
    2025-02-02
  • 詳解Nginx中的geo模塊與利用其配置負(fù)載均衡的示例

    詳解Nginx中的geo模塊與利用其配置負(fù)載均衡的示例

    這篇文章主要介紹了詳解Nginx中的geo模塊與利用其配置負(fù)載均衡的示例,文中對(duì)模塊的geo指令使用有比較詳細(xì)的介紹,需要的朋友可以參考下
    2016-01-01
  • nginx部署vue項(xiàng)目的詳細(xì)圖文教程

    nginx部署vue項(xiàng)目的詳細(xì)圖文教程

    很多小伙伴在做完Vue項(xiàng)目之后,想要部署到服務(wù)器上自己運(yùn)行試試,下面這篇文章主要給大家介紹了關(guān)于nginx部署vue項(xiàng)目的詳細(xì)圖文教程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Nginx?Socket代理的實(shí)現(xiàn)方法

    Nginx?Socket代理的實(shí)現(xiàn)方法

    Nginx的socket代理通常指的是Nginx通過stream模塊來處理非HTTP的?TCP?流量,本文就來介紹一下Nginx?Socket代理的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • WordPress中開啟多站點(diǎn)支持及Nginx的重寫規(guī)則配置

    WordPress中開啟多站點(diǎn)支持及Nginx的重寫規(guī)則配置

    這篇文章主要介紹了WordPress中開啟多站點(diǎn)支持及Nginx的重寫規(guī)則配置方法,在同一個(gè)WordPress軟件中開啟的多個(gè)站點(diǎn)如果需要綁定不同域名的話也可以使用WordPress MU Domain Mapping插件,需要的朋友可以參考下
    2016-03-03
  • nginx配置限制同一個(gè)ip的訪問頻率方法

    nginx配置限制同一個(gè)ip的訪問頻率方法

    今天小編就為大家分享一篇nginx配置限制同一個(gè)ip的訪問頻率方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • nginx配置長連接、短連接、WebSocket的實(shí)現(xiàn)步驟

    nginx配置長連接、短連接、WebSocket的實(shí)現(xiàn)步驟

    在Nginx中,您可以通過配置來控制長連接、短連接以及?WebSocket?的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-02-02
  • nginx+tomcat實(shí)現(xiàn)多級(jí)反向代理的示例代碼

    nginx+tomcat實(shí)現(xiàn)多級(jí)反向代理的示例代碼

    本文介紹在CentOS系統(tǒng)下安裝Tomcat、配置虛擬主機(jī)多級(jí)目錄,并通過Nginx反向代理將請(qǐng)求轉(zhuǎn)發(fā)至指定IP,構(gòu)建多級(jí)代理拓?fù)鋵?shí)現(xiàn)負(fù)載均衡與訪問控制,感興趣的可以了解一下
    2025-07-07
  • Apache和Nginx的優(yōu)缺點(diǎn)詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Apache和Nginx的優(yōu)缺點(diǎn)詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Nginx和Apache一樣,都是HTTP服務(wù)器軟件,在功能實(shí)現(xiàn)上都采用模塊化結(jié)構(gòu)設(shè)計(jì),都支持通用的語言接口。下面通過本文給大家分享Apache和Nginx比較 功能對(duì)比,感興趣的朋友參考下吧
    2017-08-08

最新評(píng)論

晋宁县| 平果县| 陕西省| 乐至县| 屏山县| 太康县| 和静县| 军事| 苗栗市| 东丰县| 磐安县| 连江县| 曲阜市| 商洛市| 黑水县| 宝兴县| 兖州市| 昌图县| 皮山县| 江津市| 浮山县| 大足县| 河津市| 弥勒县| 宜兴市| 左权县| 扶沟县| 文山县| 浦江县| 沅陵县| 永昌县| 阳泉市| 蒙阴县| 迁安市| 邢台市| 舒兰市| 新密市| 蕲春县| 罗城| 山阳县| 开阳县|