摘要:配置的機(jī)制是將后端服務(wù)返回的頁面緩存起來,后續(xù)請求到來時直接返回頁面,省去與后端服務(wù)通信及生成頁面的消耗。隸屬于模塊,而模塊又歸屬于模塊,所以與緩存相關(guān)的配置應(yīng)當(dāng)都出現(xiàn)在這兩個及下屬配置塊中主要是和。
轉(zhuǎn)載請注明文章出處:https://tlanyan.me/nginx-conf...
在嘗試Ghost中提到過托管博客的VPS由于內(nèi)存不足導(dǎo)致服務(wù)宕機(jī)。今天意識到可以通過Nginx緩存避免請求落到PHP和MySQL端,提升整體性能。此外博客發(fā)布后很少改動,讀多寫少,是使用緩存(或靜態(tài)化)的好場景。
緩存機(jī)制Nginx提供了基于代理(proxy)和基于fastcgi的兩種緩存方式,兩者指令集十分相似,使用上差別不大。由于本站博客采用Nginx+PHP-FPM架構(gòu),故而使用基于fastcgi的緩存,即fastcgi cache。
配置fastcgi cache的機(jī)制是將后端CGI服務(wù)返回的頁面緩存起來,后續(xù)請求到來時直接返回頁面,省去與后端服務(wù)通信及生成頁面的消耗。fastcgi cache與squid、varnish、CDN等原理類似,由于減少了后端請求,原則上性能會比WordPress的各種緩存插件高出許多。
fastcgi cache隸屬于fastcgi模塊,而fastcgi模塊又歸屬于http模塊,所以與緩存相關(guān)的配置應(yīng)當(dāng)都出現(xiàn)在這兩個及下屬配置塊中(主要是http, server和location)。
根據(jù)官方文檔,博客站點采用的緩存配置如下:
http { ... fastcgi_connect_timeout 30s; # 全局設(shè)置, fastcgi_cache_path只能出現(xiàn)在http配置塊中 # fastcgi_cache_path設(shè)置全局的緩存路徑、文件大小等,可多次出現(xiàn)設(shè)置不同的緩存池 fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:10m inactive=10m max_size=500m; fastcgi_cache_key $scheme$request_method$host$request_uri; # 設(shè)置使用過期緩存的情形:后端錯誤、超時等 fastcgi_cache_use_stale error timeout invalid_header http_500 http_503; ... server { ... # 緩存策略指示變量 set $skip_cache 0; # 緩存策略 if ($query_string != "") { set $skip_cache 1; } if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|sitemap(_index)?.xml") { set $skip_cache 1; } # 登錄用戶或發(fā)表評論者 if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; } location ~ .php$ { ... # 使用的keyzone,這里使用http中定義的WORDPRESS fastcgi_cache WORDPRESS; # 是否跳過緩存 fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; # 后端返回成功的情況下緩存10分鐘 fastcgi_cache_valid 200 10m; # 添加header字段,指示緩存命中狀態(tài)(調(diào)試使用) add_header X-Cache $upstream_cache_status; } } }
上述配置做了以下工作:
設(shè)置緩存池信息(fastcgi_cache_path);
設(shè)置緩存key(fastcgi_cache_key);
過期文件處理(fastcgi_cache_use_stale)
緩存策略(fastcgi_cache_bypass/fastcgi_no_cache)
后端請求成功時緩存時間(fastcgi_cache_valid)
增加了調(diào)試信息頭(add_header)
重啟Nginx,然后訪問頁面,查看頁面的header狀態(tài)和響應(yīng)時間。可以看到,請求一次過后(次數(shù)可通過fastcgi_cache_min_uses設(shè)置),后續(xù)請求都從緩存請求(X-Cache值為HIT),速度提升非常明顯。對于管理后臺頁面,x-cache的值為BYPASS,正是我們需要的。
其他開源版的Nginx不能自動清除緩存,當(dāng)文章變動或者有新評論時不能立即更新頁面。要達(dá)到此目的,可使用商業(yè)版Nginx或者通過開源插件解決,詳情查看此文。
參考http://nginx.org/en/docs/http...
https://www.mf8.biz/wordpress...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40062.html
摘要:指令中的參數(shù)時間內(nèi)文件的最少使用次數(shù),如果超過這個數(shù)字,文件描述符一直是在緩存中打開的,如上例,如果有一個文件在時間內(nèi)一次沒被使用,它將被移除。 一、這里的優(yōu)化主要是指對nginx的配置優(yōu)化,一般來說nginx配置文件中對優(yōu)化比較有作用的主要有以下幾項: nginx進(jìn)程數(shù),建議按照cpu數(shù)目來指定,一般跟cpu核數(shù)相同或為它的倍數(shù)。 worker_processes 8; 為每...
摘要:服務(wù)器市場份額。子進(jìn)程負(fù)責(zé)創(chuàng)建由指令設(shè)置的服務(wù)器線程,同時還負(fù)責(zé)監(jiān)聽接收到的請求,并將請求分發(fā)給處理線程。在版本引入了模塊,這個模塊基于模塊創(chuàng)建的,并加入了獨立的監(jiān)聽線程來管理請求處理完成后的休眠的連接。基于事件的服務(wù)器完勝。 譯文首發(fā)于 Apache 與 Nginx 性能對比:Web 服務(wù)器優(yōu)化技術(shù),轉(zhuǎn)載請注明出處。 多年前 Apache 基金會 Web 服務(wù)器 簡稱「Apache」...
摘要:服務(wù)器市場份額。子進(jìn)程負(fù)責(zé)創(chuàng)建由指令設(shè)置的服務(wù)器線程,同時還負(fù)責(zé)監(jiān)聽接收到的請求,并將請求分發(fā)給處理線程。在版本引入了模塊,這個模塊基于模塊創(chuàng)建的,并加入了獨立的監(jiān)聽線程來管理請求處理完成后的休眠的連接。基于事件的服務(wù)器完勝。 譯文首發(fā)于 Apache 與 Nginx 性能對比:Web 服務(wù)器優(yōu)化技術(shù),轉(zhuǎn)載請注明出處。 多年前 Apache 基金會 Web 服務(wù)器 簡稱「Apache」...
摘要:反向代理模塊何為反向代理接收客戶端請求,并把請求交給后端服務(wù)器處理,后端服務(wù)器處理完成后,響應(yīng)通過反向代理服務(wù)器返回給客戶端。作為反向代理服務(wù)器經(jīng)常要配置一組服務(wù)器,以實現(xiàn)負(fù)載均衡。 1、nginx反向代理模塊 何為反向代理?接收客戶端請求,并把請求交給后端服務(wù)器處理,后端服務(wù)器處理完成后,響應(yīng)通過反向代理服務(wù)器返回給客戶端。反向代理可實現(xiàn)局域網(wǎng)中的服務(wù)器可被公網(wǎng)中的客戶端訪問,也可實...
閱讀 648·2021-10-27 14:15
閱讀 1182·2021-10-15 09:42
閱讀 2745·2019-08-30 15:53
閱讀 1288·2019-08-23 17:02
閱讀 2965·2019-08-23 16:23
閱讀 3181·2019-08-23 15:57
閱讀 3465·2019-08-23 14:39
閱讀 518·2019-08-23 14:35