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

✅nginx緩存實際上是如何工作的
從本地緩存中,NGINX的核心是一種反向代理,該反向代理存儲了上游服務器(例如Apache,node.js或php-fpm)的響應。當再次提出相同的請求時,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; } } }
?常見的陷阱以及如何避免它們
默認
proxy_cache_key
太寬了
默認情況下,nginx使用$scheme$proxy_host$request_uri
,它忽略了諸如?utm_source=...
查詢字符串,但也忽略了X-Forwarded-Proto
或Cookie之類的東西。
→修復:自定義密鑰以包括重要的內容:PROXY_CACHE_KEY“ $ scheme $ host $ request_uri $ cookie_user”;
緩存動態內容(例如 /API或特定用戶特定頁面)
如果您緩存/profile
或/cart
,用戶可能會看到別人的數據。
→修復:排除敏感路徑:位置〜 ^/(api | admin | profile){ proxy_cache_bypass 1; proxy_no_cache 1; }
不處理緩存無效
nginx不會在內容更新上自動侵權 - 您需要策略。
→選項:- 使用
proxy_cache_purge
(需要ngx_http_cache_purge_module
) - 為揮發性內容設置簡短的TTL
- 通過緩存密鑰更改觸發緩存破壞(例如,添加版本參數)
- 使用
忽略起源的高速緩存標頭
如果您的應用程序發送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中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

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

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

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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