目錄
✅nginx緩存實際上是如何工作的
?常見的陷阱以及如何避免它們
? ️現實世界中使用
首頁 運維 Nginx 深入研究Nginx緩存

深入研究Nginx緩存

Jul 31, 2025 am 07:35 AM

NGINX緩存是通過Proxy_cache_path在本地存儲上游響應的工作,從而使使用Proxy_Cache啟用緩存,並使用Proxy_cache_key(自定義以避免默認的陷阱)定義唯一的鍵,並通過Proxy_cache_valid設置ttls,並使用X-Cache-cache-StatusStatus Heastersersersersersersersersersersersersersersersssepting ttls。 2. Common issues include overly broad keys (fix: include cookies or query strings), caching dynamic content like /api (fix: use proxy_cache_bypass), no invalidation strategy (fix: use purge, short TTLs, or versioned keys), and ignoring origin cache headers (fix: respect or override with proxy_ignore_headers); 3. Pro提示:使用fastcgi_cache進行PHP,監視命中率和磁盤使用情況,溫暖的高速緩存後,並使用Proxy_cache_use_stale啟用了陳舊的回報,以及零下降彈性的背景更新(零正確) - 正確的,它可以增強負載,從而降低負載,從而完全降低使用用戶體驗。

深入研究Nginx緩存

NGINX緩存不僅僅是要在您的配置中拍打proxy_cache並將其稱為一天 - 它是一種強大的工具,當正確調整時,可以削減響應時間,減少後端負載並大大改善用戶體驗。但是配置錯誤嗎?它可以提供陳舊的內容,廢物內存,甚至可以破壞您的應用程序。讓我們分解。

深入研究Nginx緩存

✅nginx緩存實際上是如何工作的

從本地緩存中,NGINX的核心是一種反向代理,該反向代理存儲了上游服務器(例如Apache,node.js或php-fpm)的響應。當再次提出相同的請求時,NGINX將提供緩存的版本,而不是擊中後端。

關鍵組件:

深入研究Nginx緩存
  • proxy_cache_path :定義緩存在磁盤上存儲的位置和方式。
  • proxy_cache :啟用特定位置的緩存。
  • proxy_cache_key :控制nginx如何標識唯一的請求(默認是風險!)。
  • proxy_cache_valid :為不同的HTTP狀態代碼設置TTL。
  • add_header X-Cache-Status $upstream_cache_status; :非常有用,可用於調試 - 如果您是命中,錯過或過期的話,請向您介紹。

示例最小設置:

 http {
    proxy_cache_path/var/carce/nginx級別= 1:2 keys_zone = my_cache:10m max_size = 10g intairive = nestair = 60m use_temp_path = off;

    伺服器 {
        地點 / {
            proxy_pass http:// backend;
            proxy_cache my_cache;
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404 1m;
            add_header x-cache-status $ upstream_cache_status;
        }
    }
}

?常見的陷阱以及如何避免它們

  1. 默認proxy_cache_key太寬了
    默認情況下,nginx使用$scheme$proxy_host$request_uri ,它忽略了諸如?utm_source=...查詢字符串,但也忽略了X-Forwarded-Proto或Cookie之類的東西。
    修復:自定義密鑰以包括重要的內容:

    深入研究Nginx緩存
     PROXY_CACHE_KEY“ $ scheme $ host $ request_uri $ cookie_user”;
  2. 緩存動態內容(例如 /API或特定用戶特定頁面)
    如果您緩存/profile/cart ,用戶可能會看到別人的數據。
    修復:排除敏感路徑:

    位置〜 ^/(api | admin | profile){
        proxy_cache_bypass 1;
        proxy_no_cache 1;
    }
  3. 不處理緩存無效
    nginx不會在內容更新上自動侵權 - 您需要策略。
    選項

    • 使用proxy_cache_purge (需要ngx_http_cache_purge_module
    • 為揮發性內容設置簡短的TTL
    • 通過緩存密鑰更改觸發緩存破壞(例如,添加版本參數)
  4. 忽略起源的高速緩存標頭
    如果您的應用程序發送Cache-Control: no-cache ,則NGINX應尊重它。
    修復

     proxy_ignore_headers cache-control;
    proxy_cache_valid 200 302 5m;

    (或者,如果您相信您的後端,請不要忽略它們。)


? ️現實世界中使用

  • 使用fastcgi_cache用於PHP應用程序(例如WordPress):相同的邏輯,不同的指令。
  • 監視緩存性能
    • 通過日誌檢查命中率( $upstream_cache_status
    • 觀看磁盤用法( /var/cache/nginx
    • 使用諸如goaccess或Prometheus nginx-Module-vts之類的工具
  • 部署後加熱緩存- 手動或通過腳本擊中密鑰URL。
  • 使用陳舊的恢復模式:
     proxy_cache_use_stale錯誤超時更新http_500;
    proxy_cache_background_update on;

    這使得Nginx在背景中悄悄地刷新它 - 在後端打ic中零停機時間。


    基本上,NGINX緩存起初很簡單,但足夠深,可以優化幾個月。正確獲取基礎知識,避免常見的陷阱,您會看到速度和可擴展性的真正勝利。

    以上是深入研究Nginx緩存的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP教程
1600
276
配置NGINX超時 配置NGINX超時 Aug 03, 2025 pm 04:25 PM

proxy_connect_timeout设为5–10秒,确保快速失败;2.proxy_send_timeout设为10–30秒,适应慢速上传;3.proxy_read_timeout匹配应用最长响应时间,避免504错误;4.若负载均衡,可设proxy_next_upstream_timeout限制重试时长——正确配置这些值能显著减少网关超时、提升用户体验,并需结合实际日志和监控持续调优。

Server_name指令做什麼? Server_name指令做什麼? Aug 02, 2025 pm 04:49 PM

Nginx中的server_name指令用於根據客戶端發送的Host頭選擇處理請求的虛擬主機。具體來說:1.server_name通過精確匹配、通配符或正則表達式匹配Host頭,決定使用哪個server塊;2.未匹配時會回退到默認server塊,通常是第一個或顯式標記為default_server的塊;3.正確配置server_name有助於避免內容重複、提升SEO並增強性能;4.複雜匹配和通配符應謹慎使用,以保持清晰性和效率。因此,合理設置server_name能確保流量正確路由並簡化服務器維

Nginx URL重寫和重定向 Nginx URL重寫和重定向 Aug 01, 2025 am 03:48 AM

Redirects(301/302)changethebrowserURLandareSEO-friendlyformovedcontent;rewritesinternallymapURLswithoutbrowserredirection.2.Usereturn301forfast,clearredirectslikeforcingHTTPS,redirectingwww,ormovingoldpathstonewones.3.Userewritewithlastorbreakinlocat

nginx for node.js應用程序 nginx for node.js應用程序 Aug 01, 2025 am 04:13 AM

nginxactsasAsareVerseProxy,HidingInternalportsandalling MultiplipliplipsonOnserver; 2. Ithlesssl/tlstermination效果效率lyvialet'sencrypt,offloadingIncryption fromNode fromnode; 3.ITServestTicaticFilesFilesFilesFasticFasterFasterFasterThannAnnOdeByDirectLyectlyectlyectlyectlyectlyectlymanagingRouteSlike/static/Static/Static/Statatic/Static;

nginx入口控制器的Kubernetes nginx入口控制器的Kubernetes Aug 02, 2025 am 09:21 AM

NginxIngressController是Kubernetes中實現HTTP/HTTPS路由、負載均衡、SSL終止、重寫和限流的核心組件,1.可基於主機名或路徑將請求轉發到對應Service;2.支持通過Secret配置TLS/SSL實現HTTPS;3.利用ConfigMap和annotations提供靈活配置如重寫和限流;4.部署推薦Helm或官方YAML;5.注意pathType匹配規則、後端服務健康狀態、全局配置與日誌監控,它是生產環境中穩定可靠的流量入口方案。

深入研究Nginx緩存 深入研究Nginx緩存 Jul 31, 2025 am 07:35 AM

nginxcachingworksbysbyStoringUpStreamResponsesLocallyViaProxy_cache_cache_path,enablingCachewithProxy_cache,defininguniquekeyswithprox y_cache_key(customizetoavoiddefaultpitfalls),設置TTTLSVIAPROXY_CACHE_VALID,anddebuggingwithx-cache-statusheaders; 2.Commonis

NGINX安裝指南 NGINX安裝指南 Jul 31, 2025 am 08:50 AM

在Ubuntu/Debian上安裝Nginx需更新包列表(sudoaptupdate)、安裝Nginx(sudoaptinstallnginx-y)、啟動並啟用服務(sudosystemctlstart/enablenginx);2.在CentOS/RHEL上需啟用EPEL源(sudodnfinstallepel-release-y)、安裝Nginx、啟動服務,並開放防火牆HTTP/HTTPS端口(firewall-cmd命令);3.安裝後應驗證配置語法(sudonginx-t)、檢查默認站點目

使用SystemD管理NGINX 使用SystemD管理NGINX Aug 01, 2025 am 07:15 AM

使用systemctlstatusnginx檢查Nginx服務狀態,確認是否運行及開機自啟;2.掌握start、stop、restart、reload、enable、disable等核心命令,優先用reload避免連接中斷;3.用journalctl-unginx.service查看日誌,-f參數可實時監控,便於排查啟動失敗問題;4.修改配置前務必運行sudonginx-t測試語法,防止reload失敗;5.如需自定義配置,使用sudosystemctleditnginx創建安全覆蓋文件而非直接

See all articles