Nginx緩存配置之手動清除緩存
阿新 • • 發佈:2018-08-16
charset shel 分享 main key 刷新 zone web pointer 文件中只保留 upstream 以及其他通用配置信息。
中引入拆分的配置文件, 在配置文件中的 http 節點下進行引入
訪問我的博客
前言
前文介紹了利用 nginx 的 nginx_ngx_cache_purge 模塊來實現緩存功能,並設置了緩存時間為一天。
但是如果前端修改了頁面,比如首頁,由於 Nginx 緩存的存在,網站首頁並不會立即生效,而是要等到緩存過期。這樣明顯不是我們想要的結果,所以需要進行手動使 Nginx 緩存失效。以下為操作詳解。
基礎環境
- 已經設置緩存的 Nginx 服務器, 參照我之前博文 Nginx緩存配置
Nginx 配置文件拆分
在企業 Nginx 應用中,Nginx 配置文件應該根據域名不同來進行拆分,然後再 nginx.conf中進行include引入。這樣的好處是便於管理配置文件,便於修改配置文件, 而 nginx.conf
在 Nginx 的 conf 目錄下創建文件夾 include, 用於保存拆分的配置文件。
mkdir include
拆分的規則可以如下:
- 桌面版(WEB)的 Nginx 配置文件,可以命名為 nginx_web.conf
- 手機版(WAP)的 Nginx 配置文件,可以命名為 nginx_wap.conf
- 安卓的 Nginx 配置文件,可以命名為 nginx_apk.conf
- 蘋果的 Nginx 配置文件,可以命名為 nginx_ios.conf
- 清除緩存的配置文件,可以命名為 purge.conf
在 /usr/local/nginx/conf/nginx.conf
http{
#......
# 註意 purge.conf 必須要第一個引用!!!
include include/purge.conf;
# 引入其他配置文件
include include/nginx_web.conf;
#include include/nginx_wap.conf;
#include include/nginx_apk.conf;
#include include/nginx_ios.conf;
}
配置緩存清除
cd /usr/local/nginx/conf/include vi purge.conf #purge.conf 文件內容為: server { listen 80; server_name 192.168.200.129;# 此處我配置的是本機ip charset utf8; location ~ /purge(/.*) { allow all;# 訪問此接口的白名單,all代表所有人都可以訪問該路徑 # tmpcache 為前文中 proxy_cache_path 裏配置的 keys_zone 的值 # www.domain.com$1$is_args$args 表示緩存key的名稱,清除某一域名下的緩存,可以指定參數 # $1 代表正則匹配中的第一組 proxy_cache_purge cachefile www.domain.com$1$is_args$args; } } # 保存 purge.conf 文件
測試清除緩存
如果要進行緩存清除,首先需要有緩存文件,此處參照前文 Nginx緩存配置 中,訪問 www.domain.com/testpage2 ,刷新頁面,直到緩存已經生成,即 X-Cache 的狀態為 HIT。
進入 cd /tmp/cache/ ,查看已經生成了緩存文件
# 測試 nginx 配置是否正確
/usr/local/nginx/sbin/nginx -t
# 如果提示 is ok,說明配置沒有問題,否則需要修改
# 重啟 Nginx
/usr/local/nginx/sbin/nginx -s reload
瀏覽器訪問(也可以通過 curl 命令來訪問):
# 清除key為 www.domain.com/ 的緩存
192.168.200.129/purge/
# 清除 key 為 www.domain.com/testpage2 頁面緩存
192.168.200.129/purge/testpage2
如果返回
則表示清除成功。
資源下載
示例nginx配置文件
Nginx緩存配置之手動清除緩存