nginx緩存以及清除緩存的使用
緩存
- 緩存的基本思想是利用客戶端訪問(wèn)的時(shí)間局限性,將客戶端訪問(wèn)過(guò)的內(nèi)容做一個(gè)副本,在一定時(shí)間內(nèi)存放到本地,當(dāng)改數(shù)據(jù)下次被訪問(wèn)時(shí),不必連接到后端服務(wù)器反復(fù)去查詢數(shù)據(jù),而是由本地保存的副本響應(yīng)數(shù)據(jù)。
- 保存在本地的這些副本具有一個(gè)過(guò)期時(shí)間,超過(guò)該時(shí)間將會(huì)更新。判斷一個(gè)副本數(shù)據(jù)是否為過(guò)期數(shù)據(jù)的辦法有很多,可以使用保留時(shí)間來(lái)判斷,也可以使用數(shù)據(jù)完整度來(lái)判斷。
- 許多Web服務(wù)器還具有校驗(yàn)功能,就是當(dāng)某些副本數(shù)據(jù)過(guò)期以后,先向后端服務(wù)器發(fā)送校驗(yàn)請(qǐng)求,后端服務(wù)器對(duì)這些數(shù)據(jù)進(jìn)行校驗(yàn),如果發(fā)現(xiàn)原數(shù)據(jù)和副本沒(méi)有差別,則將過(guò)期副本重新置為可用副本。
緩存的好處
- 減輕服務(wù)器負(fù)載
- 提供網(wǎng)頁(yè)響應(yīng)效率
- 降低網(wǎng)絡(luò)阻塞,增強(qiáng)網(wǎng)絡(luò)可擴(kuò)展性
為什么使用緩存?
- 服務(wù)器處理能力以及負(fù)載能力出現(xiàn)瓶頸,響應(yīng)效率大大降低
- 為了減少網(wǎng)絡(luò)傳輸延遲,提升響應(yīng)效率
- 能夠避免因?yàn)楹蠖朔?wù)器出現(xiàn)異常以及網(wǎng)絡(luò)故障,客戶端請(qǐng)求數(shù)據(jù)副本能夠及時(shí)響應(yīng)
nginx的緩存機(jī)制
proxy模塊指令
以上nginx配置結(jié)合使用:
http { . . . proxy_cache_path /cache/nginx levels=1:2 keys_zone=imooc_cache:10m max_size=5g inactive=60m use_temp_path=off; . . . server { . . . location /api/ { proxy_cache imooc_cache; proxy_pass 127.0.0.1:81/api/; proxy_cache_valid 200 304 12h; proxy_cache_valid any 10m; proxy_cache_key $host$uri$is_args$args; include proxy_params; } } }
proxy_params文件的配置如下:
proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 4 128k;
訪問(wèn)一次頁(yè)面,并向 http://192.168.148.168:8000/api/ 發(fā)起一個(gè)接口數(shù)據(jù)請(qǐng)求,查看/cache/nginx目錄下的緩存結(jié)果:
[root@localhost 02]# cat 9563faff155b9fcfbf3fb1b16c253021 ?]n`?????????′m`?t> KEY: 192.168.148.170/api/index.php HTTP/1.1 200 OK Date: Wed, 07 Apr 2021 13:34:55 GMT Server: Apache/2.4.46 (Unix) PHP/7.4.16 X-Powered-By: PHP/7.4.16 Content-Length: 31 Connection: close Content-Type: text/html; charset=UTF-8 this is 192.168.148.170_php_new[root@localhost 02]#
清除緩存
ngx_cache_purge是nginx的第三方模塊,能夠幫助我清除nginx中的緩存。
如果啟動(dòng)了緩存,沒(méi)有安裝這個(gè)模塊(ngx_cache_purge),重啟nginx會(huì)出現(xiàn)異常:
2021/04/18 10:15:36 [emerg] 12180#0: unknown directive “proxy_cache_purge” in /vhost/test_170.cc.conf:20
這個(gè)異常是在指示我們,找不到該指令的驅(qū)動(dòng),需要按照相關(guān)模塊。
ngx_cache_purge只是nginx的第三方模塊,并不是某個(gè)特殊的軟件,所以我們需要對(duì)nginx重新進(jìn)行編譯,操作如下:
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_gzip_static_module --with-http_stub_status_module --with-file-aio --with-http_realip_module --with-http_ssl_module --with-pcre=/home/pcre-8.44 --with-zlib=/home/zlib-1.2.11 --with-openssl=/home/openssl-1.1.1g --add-module=/home/ngx_cache_purge-2.3 make -j2 make install
配置nginx:
location ~ /clear_cache(.*) { allow all; proxy_cache_purge imooc_cache $host$1$is_args$args; }
緩存清除測(cè)試
訪問(wèn):http://192.168.148.170:8000/clear_cache//api/index.php, 訪問(wèn)這個(gè)鏈接將會(huì)清除接口:http://192.168.148.170:8000//api/index.php 的緩存數(shù)據(jù)。
成功清除緩存返回結(jié)果如下
沒(méi)有緩存返回結(jié)果如下
控制nginx緩存
proxy_no_cache
# set 指令為變量設(shè)置,proxy_no_cache參數(shù)中的值可以設(shè)置多個(gè),但是多個(gè)值中,只要有一個(gè)是不為0的,就會(huì)通過(guò)緩存響應(yīng)數(shù)據(jù) server { . . . location /api/ { set $a 0; #設(shè)置初始值 if ( $request_uri ~ /api/noapi/(.*) ){ set $a 1; #如果滿足不緩存 設(shè)置為1 } proxy_no_cache $a;// . . . } location ~ /clear_cache(.*) { allow all; proxy_cache_purge imooc_cache $host$1$is_args$args; } }
到此這篇關(guān)于nginx緩存以及清除緩存的使用的文章就介紹到這了,更多相關(guān)nginx緩存及清除緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文弄懂Nginx的location匹配的實(shí)現(xiàn)
這篇文章主要介紹了一文弄懂Nginx的location匹配的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02Nginx根據(jù)url中的path動(dòng)態(tài)轉(zhuǎn)發(fā)到upstream的實(shí)現(xiàn)
這篇文章主要介紹了Nginx根據(jù)url中的path動(dòng)態(tài)轉(zhuǎn)發(fā)到upstream的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01一段萬(wàn)能的nginx接口實(shí)現(xiàn)反向代理配置
這篇文章主要介紹了一段萬(wàn)能的nginx接口實(shí)現(xiàn)反向代理配置,詳細(xì)的介紹了什么是反向代理及其接口反向代理的實(shí)現(xiàn),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-10-10Nginx訪問(wèn)本地靜態(tài)資源詳細(xì)步驟(推薦)
Nginx?(engine?x)?是一個(gè)高性能的HTTP和反向代理web服務(wù)器,同時(shí)也提供了IMAP/POP3/SMTP服務(wù),這篇文章主要介紹了nginx配置訪問(wèn)本地靜態(tài)資源,需要的朋友可以參考下2022-12-12Nginx可視化管理工具結(jié)合cpolar實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)的步驟詳解
Nginx Proxy Manager 是一個(gè)開(kāi)源的反向代理工具,本文將給大家介紹在Linux 安裝Nginx Proxy Manager并且結(jié)合 cpolar內(nèi)網(wǎng)穿透工具實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)管理界面,同等,當(dāng)我們使用Nginx Proxy Manager配置其他本地服務(wù),并且需要遠(yuǎn)程訪問(wèn),也是同樣的方式,需要的朋友可以參考下2023-09-09