nginx缓存以及清除缓存的使用

 更新时间:2022年07月24日 16:54:45   作者:单车登月  
本文主要介绍了nginx缓存以及清除缓存的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

缓存

  • 缓存的基本思想是利用客户端访问的时间局限性,将客户端访问过的内容做一个副本,在一定时间内存放到本地,当改数据下次被访问时,不必连接到后端服务器反复去查询数据,而是由本地保存的副本响应数据。
  • 保存在本地的这些副本具有一个过期时间,超过该时间将会更新。判断一个副本数据是否为过期数据的办法有很多,可以使用保留时间来判断,也可以使用数据完整度来判断。
  • 许多Web服务器还具有校验功能,就是当某些副本数据过期以后,先向后端服务器发送校验请求,后端服务器对这些数据进行校验,如果发现原数据和副本没有差别,则将过期副本重新置为可用副本。

缓存的好处

  • 减轻服务器负载
  • 提供网页响应效率
  • 降低网络阻塞,增强网络可扩展性

为什么使用缓存?

  • 服务器处理能力以及负载能力出现瓶颈,响应效率大大降低
  • 为了减少网络传输延迟,提升响应效率
  • 能够避免因为后端服务器出现异常以及网络故障,客户端请求数据副本能够及时响应

nginx的缓存机制

proxy模块指令

以上nginx配置结合使用:

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;

访问一次页面,并向 http://192.168.148.168:8000/api/ 发起一个接口数据请求,查看/cache/nginx目录下的缓存结果:

[root@localhost 02]# cat 9563faff155b9fcfbf3fb1b16c253021 
¿]n`ÿÿÿÿÿÿÿÿÿ´m`Dž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中的缓存。

如果启动了缓存,没有安装这个模块(ngx_cache_purge),重启nginx会出现异常:

2021/04/18 10:15:36 [emerg] 12180#0: unknown directive “proxy_cache_purge” in /vhost/test_170.cc.conf:20

这个异常是在指示我们,找不到该指令的驱动,需要按照相关模块。

ngx_cache_purge只是nginx的第三方模块,并不是某个特殊的软件,所以我们需要对nginx重新进行编译,操作如下:

./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;
}

缓存清除测试
访问:http://192.168.148.170:8000/clear_cache//api/index.php, 访问这个链接将会清除接口:http://192.168.148.170:8000//api/index.php 的缓存数据。

成功清除缓存返回结果如下

没有缓存返回结果如下

控制nginx缓存

proxy_no_cache

# set 指令为变量设置,proxy_no_cache参数中的值可以设置多个,但是多个值中,只要有一个是不为0的,就会通过缓存响应数据
server
{
    .
    .
    .
    location /api/ {
       set $a 0; #设置初始值
       if ( $request_uri ~ /api/noapi/(.*) ){
           set $a 1; #如果满足不缓存 设置为1
       }

       proxy_no_cache $a;//
       .
       .
       .
    }
    location ~ /clear_cache(.*) {
         allow   all;
         proxy_cache_purge imooc_cache $host$1$is_args$args;
    }
}

查看proxy_cache指令详解

到此这篇关于nginx缓存以及清除缓存的使用的文章就介绍到这了,更多相关nginx缓存及清除缓存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 完全卸载nginx以及安装的超详细步骤

    完全卸载nginx以及安装的超详细步骤

    由于之前下载太乱,找相关目录半天找不对位置,所以决定卸载nginx并重新安装,下面这篇文章主要给大家介绍了关于完全卸载nginx以及安装的超详细步骤,需要的朋友可以参考下
    2022-12-12
  • Nginx配置入门教程

    Nginx配置入门教程

    这篇文章主要介绍了Nginx配置入门教程,本文讲解了反向代理的概念、初始配置、进阶配置、负载均衡配置等内容,需要的朋友可以参考下
    2015-02-02
  • 详解linux中 Nginx 常见502错误问题解决办法

    详解linux中 Nginx 常见502错误问题解决办法

    这篇文章主要介绍了详解linux中 Nginx 常见502错误问题解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Nginx 转发匹配规则的实现

    Nginx 转发匹配规则的实现

    这篇文章主要介绍了Nginx 转发匹配规则的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • nginx+lua+redis防刷和限流的实现

    nginx+lua+redis防刷和限流的实现

    本文将介绍如何使用nginx lua redis实现防刷和限流,首先,我们将了解防刷和限流的基本概念和必要性,然后,我们将详细介绍如何使用nginx lua redis实现防刷和限流,感兴趣的可以了解一下
    2023-09-09
  • CentOS 中Nginx的安装方法

    CentOS 中Nginx的安装方法

    最近研究LNMP,首先要在linux下配置nginx服务器,废话少说,下面给大家分享下在CentOS 中Nginx的安装方法
    2017-08-08
  • Nginx的使用经验小结

    Nginx的使用经验小结

    相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额。今天我们就简单介绍下本人在使用nginx的过程中的一些小小的经验
    2017-10-10
  • 针对OpenSSL安全漏洞调整Nginx服务器的方法

    针对OpenSSL安全漏洞调整Nginx服务器的方法

    这篇文章主要介绍了针对OpenSSL漏洞调整Nginx服务器的方法,2014年爆出的SSL安全漏洞震惊了全世界,需要的朋友可以参考下
    2015-06-06
  • 详解如何基于Nginx搭建流媒体服务器

    详解如何基于Nginx搭建流媒体服务器

    Nginx RTMP是一个Nginx插件,支持将RTMP和HLS流添加到媒体服务器,本文将以ubuntu为例为大家介绍一下如何安装使用nginx Rtmp 插件的步骤,需要的可以参考下
    2023-10-10
  • nginx访问日志并删除指定天数前的日志记录配置方法

    nginx访问日志并删除指定天数前的日志记录配置方法

    这篇文章主要介绍了nginx访问日志并删除指定天数前的日志记录配置方法,需要的朋友可以参考下
    2014-03-03

最新评论