為什麼要做web cache,我想大家最主要的是解決流量的壓力。隨著**流量的提公升,如果只是單台機器既處理靜態檔案,又處理動態指令碼,顯然效率很難上公升,不能處理日益**的流量壓力。與此同時某些**的頁面內容並不是經常變化,因此我們可以分兩層架構來組織**。前端web快取+後端web伺服器。
前端web快取有多重方式實現,原理就是隊請求結果頁面靜態化並設定乙個超時期限,快取頁面過期後,新請求到達時重新到後端web伺服器獲取內容更新;沒有nginx前比較流行的方法是squid,但squid不能充分利用處理器的多核特性,越來越多的**選用nginx來做前端的web快取。
要想使用nginx的快取功能要保證nginx新增了proxy模組。我們可以使用-v選項(大寫的v,小寫的v是看版本號的)來檢視nginx的編譯引數。我使用的是預設的引數編譯的,如下所示:
nginx的所有模組必須在編譯的時候新增,不能再執行的時候動態載入,預設的編譯選項下包含的模組,如果你不是顯示的用引數關閉它。
nginx預設安裝的模組如下
模組名稱
描述版本
如何禁用
proxy模組中常用的指令時proxy_pass和proxy_cache.
nginx的web快取功能的主要是由proxy_cache、fastcgi_cache指令集和相關指令集完成,proxy_cache指令負責反向**快取後端伺服器的靜態內容,fastcgi_cache主要用來處理fastcgi動態程序快取(這裡我不是很清楚這兩個指令的區別,好像功能上都差不多,尤其後面這句話的意思,是我翻譯過來的)。
確認proxy模組安裝好後,下面對nginx的配置檔案進行設定,重點部分如標紅字型所示。
這是我的nginx.conf配置檔案。
}配置檔案中以proxy_開頭的指令我們大都可以字面意思得到理解。請務必注意一點proxy_cache_path和proxy_temp_path設定的目錄需要在同一分割槽,因為它們之間是硬鏈結的關係。
當我們瀏覽http://localhost:10000/222.jpg時,在**端就把快取了,不用到**終端去快取了,可以節省資源。快取的內容放在你設定的proxy_cache_path路徑下面,看下圖
第一層目錄只有乙個字元,是由levels=1:2設定,總共二層目錄,子目錄名字由二個字元組成。突然發現,我在我的系統裡面,配置過varnish,squid,apache和mod_cache,nginx和proxy_cache,他們都是可以對檔案進行快取,不知道他們哪乙個對檔案的快取效果最好呢?有空比較一下,對了這4種快取,這個部落格裡面都有的,有興趣的朋友,可以看一下
nginx快取命中率統計(proxy cache
一.對nginx快取命中率的統計的配置 nginx 提供了變數 upstream cache status 來顯示快取的命中狀態,我們可以再nginx.conf配置中新增乙個http響應頭來顯示這一狀態,可以達到類似squid的效果,如下 修改完nginx.conf 後儲存並重啟nginx。二.快取...
nginx 利用nginx做tcp負載
在做mysql雙機 集群部署的時候,考慮在windows環境下做自動切換的問題,以及負載均衡。了解nginx在版本1.9.0以後支援tcp的負載均衡,具體可以參照官網關於模組ngx stream core module的敘述。嘗試用nginx來解決上述問題。負載配置的條件 1 nginx的版本1.9...
利用Zabbix監控Nginx
如果有資料返回,說明zabbix通訊正常,如果返回zbx notsupported,說明監控項有問題。進入系統配置 主機 監控項,檢視你的客戶端主機的監控項是活躍還是不支援 配置完agentd後必須重啟。usr local webserver zabbix bin zabbix get s 192....