對于經(jīng)常被用戶訪問的內(nèi)容,若每一次都要到后端服務(wù)器中獲取,會給服務(wù)器造成很大的壓力。為此,利用反向代理服務(wù)器對訪問頻率較多的內(nèi)容進(jìn)行緩存。 Nginx提供了兩種Web緩存方式,一種是永久緩存,另一種是臨時性緩存。 一、緩存實現(xiàn)原理Web緩存服務(wù)器位于內(nèi)容源Web服務(wù)器和客戶端之間,當(dāng)客戶端用戶訪問一個URL時,Web緩存服務(wù)器就會請求相應(yīng)的內(nèi)容源Web服務(wù)器,并將響應(yīng)的信息緩存至內(nèi)存或磁盤,然后,當(dāng)下一個請求到來時,如果訪問的是相同的URL,Web緩存服務(wù)器會直接將已緩存的內(nèi)容輸出給客戶端,而不用再次向內(nèi)容源Web服務(wù)器發(fā)送請求。 利用緩存服務(wù)器,可以有效降低內(nèi)容源服務(wù)器和數(shù)據(jù)庫的負(fù)載,提高用戶訪問的響應(yīng)速度。 二、永久緩存配置Nginx提供的proxy_store指令可以用于將內(nèi)容源服務(wù)器響應(yīng)的內(nèi)容緩存到本地,若不手動刪除,該緩存文件會一直生效,永久緩存方式適用于緩存網(wǎng)站幾乎不會改變的一些內(nèi)容。 1、準(zhǔn)備服務(wù)器 31作為Web緩存服務(wù)器,32作為內(nèi)容源Web服務(wù)器 2、緩存配置 修改Nginx配置文件nginx.conf:
注意:if和(有空格,!-e和$request_filename有空格。 3、驗證測試 在32服務(wù)器中建立test目錄并在目錄下新建index.html并存放一張圖片。 訪問后查看cache目錄文件,如果tree報command not found, 執(zhí)行如下安裝:yum -y install tree后再次執(zhí)行tree命令: 三、臨時緩存配置Nginx服務(wù)器中,還有一種使用proxy_cache指令設(shè)置的臨時緩存配置,它采用md5算法將請求鏈接進(jìn)行hash之后,根據(jù)具體配置生成緩存文件目錄,保存響應(yīng)的數(shù)據(jù)。 1、http塊緩存配置: proxy_temp_path /usr/local/nginx/proxy_temp_dir; proxy_cache_path /usr/local/nginx/proxy_cache_dir levels=1.2 keys_zone=cache_one:50m; inactive= 1m max_size= 500m;
2、server塊添加臨時緩存的相關(guān)配置: location / { # 設(shè)置緩存區(qū)域名稱 proxy_cache cache_one; # 以域名,uri,參數(shù)組合成web緩存的key值,nginx根據(jù)key值hash proxy_cache_key $host$uri$is_args$args; proxy_cache_valid 200 10m; #200緩存10分鐘 proxy_cache_valid 304 1m; #304緩存1分鐘 proxy_cache_valid 301 302 1h; #301,302緩存1小時 proxy_cache_valid any 1m; #其他未設(shè)置的狀態(tài)緩存1分鐘 proxy_temp_path cache_tmp; if (!-e $request_filename){ proxy_pass http://192.168.44.32; } } 說明:
緩存狀態(tài)返回值:
3、訪問測試 通過開發(fā)工具選擇Network選項,查看Response Headers標(biāo)簽選項,查看X-Via和X-Cache的值。 HIT表示設(shè)置成功。 過段時間后文件被刪除 常用緩存配置指令:
四、緩存清理配置利用Nginx緩存雖然減輕了后端服務(wù)器的壓力,但是會導(dǎo)致文件修改后無法及時更新緩存,只有刪除服務(wù)器中的緩存文件,Nginx才會重新請求后端服務(wù)器。 1、安裝ngx_cache_purge模塊 在github上下載:https://github.com/search?utf8=%E2%9C%93&q=ngx_cache_purge&type= 解壓ngx_cache_purge-master.zip: 配置:./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/ngx_cache_purge-master --add-module=/root/nginx-upstream-fair 編譯:make && make install 查看安裝的模塊:/usr/local/nginx/sbin/nginx -V 2、配置緩存清理功能 修改nginx.conf配置文件,在server塊中添加如下清理緩存配置
在安裝完purge模塊后,可以使用該模塊提供的指令實現(xiàn)緩存清理,在使用指令時需要遵循幾個規(guī)則:
3、訪問測試 清理proxy_cache_dir后訪問index.html地址。 查看后,在查看目錄結(jié)構(gòu): 訪問purge/index.html,清理緩存文件,從圖可以看到當(dāng)前清理的緩存文件的key值 清理完成后在此查看目錄: |
|