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

yizhihongxing

下面是关于“nginx缓存以及清除缓存的使用”的详细攻略及示例。

什么是nginx缓存

在高并发场景中,如果每次请求都去从数据库、文件中读取数据,会给服务器带来巨大的压力,导致响应速度变慢。这时候,使用nginx缓存可以大大减轻服务端的负担,同时提高网站的访问速度。

Nginx缓存是指将Web应用返回的静态或半静态资源暂时存储在内存中,在下次请求相同资源时将直接返回缓存的数据,而不必再向后端服务器请求,从而提高了响应速度。

Nginx缓存的类型

Nginx缓存分为两种类型:代理和快速缓存。

代理缓存是将后端服务器的内容缓存在Nginx中,这种缓存可以大大减轻后端服务器的并发压力。

快速缓存是将经常访问的静态资源直接缓存到Nginx服务器,直接返回缓存的资源,减少对后端服务器的访问。

Nginx缓存的使用

开启Nginx缓存

要开启Nginx缓存,需要在Nginx配置文件中增加以下配置:

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=static_cache:10m inactive=60m;

其中,

  • proxy_cache_path: 缓存的路径
  • levels=1:2:缓存目录的结构
  • keys_zone=static_cache:1m:缓存名称和缓存大小
  • inactive=60m:超时时间

配置缓存为代理缓存

当Nginx作为反向代理服务器时,可以使用代理缓存。为了使用代理缓存,需要在Nginx配置文件中增加以下配置:

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=proxy_cache:10m inactive=60m;
server {
  listen 80;
  server_name example.com www.example.com;

  location / {
    proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
    proxy_cache_valid 200 60m;
    proxy_cache_valid 404 1m;

    proxy_pass http://backend-server;
  }
}

其中,

  • proxy_cache_key: 用于定义缓存文件的命名方式,可以使用$http等Nginx变量
  • proxy_cache_valid: 设置缓存的生存时间,可以指定不同响应状态码的缓存时间
  • proxy_pass: 代理到的后端服务器

配置缓存为快速缓存

如果希望Nginx缓存放置某些静态资源,可以使用快速缓存。可以在Nginx配置文件中增加以下配置:

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=quick_cache:10m inactive=60m;
server {
  listen 80;
  server_name example.com www.example.com;

  location /static/ {
    proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
    proxy_cache_valid 200 60m;
    proxy_cache_bypass $http_pragma;
    proxy_cache_revalidate on;

    alias /var/www/html/static/;
  }
}

其中,

  • alias: 字符串是一个目录的提供服务的URL,目录名会被替换成配置的alias字段中声明的路径
  • proxy_cache_bypass: 告诉Nginx什么情况下应忽略缓存
  • proxy_cache_revalidate: 允许缓存到期后被验证

清除Nginx缓存

在实际应用中,可能需要清理Nginx缓存。可以使用以下两种方法:

手动清除缓存

手动清除缓存需要操作Nginx的缓存目录,可以使用以下命令来删除缓存:

sudo rm -rf /data/nginx/cache/*

自动清除缓存

可以使用ngx_cache_purge模块来自动清除Nginx缓存。该模块在缓存的资源更新时,可以通过以下方式来清除缓存:

location /mypage/ {
  proxy_pass http://backend-server;
  proxy_cache_key "$uri $args";
  proxy_cache_valid 200 60m;
  proxy_cache_bypass $http_pragma;
  proxy_cache_revalidate on;

  # 配置清除缓存
  proxy_cache_purge $scheme$request_method$host$uri;
}

在以上的配置中,当请求到达某个资源时,如果该资源已被缓存,则如果更新后缓存将会被删除,返回新资源。

示例1

假设我们有一个高并发的电商网站,其中有一个特定的商品页面/product_detail.html非常热门,每次请求都需要从后端数据库中读取数据,响应速度很慢。我们希望通过Nginx缓存来提高该页面的响应速度。

server {
  listen       80;
  server_name  example.com;

  # 开启Nginx缓存
  proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=product_detail:10m inactive=60m;

  location /product_detail.html {
    # 为缓存文件定义名称
    proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
    # 设置缓存时间
    proxy_cache_valid 200 5m;

    proxy_pass http://backend-server;
  }
}

在这个示例中,我们开启了Nginx缓存,并且使用了代理缓存方式。我们将页面请求代理到后端服务器上,并且为缓存文件定义了名称,并指定该缓存可以保持5分钟。

示例2

我们的网站有很多静态资源,如CSS、JS、图片等。这些静态资源不会经常更新,我们希望通过Nginx缓存来提高这些资源的访问速度。

server {
  listen       80 default_server;
  server_name  example.com;

  # 静态资源通过nginx缓存
  proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=static_cache:10m inactive=60m;

  location /static/ {
    # 为缓存文件定义名称
    proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
    # 设置缓存时间
    proxy_cache_valid 200 30d;

    alias /var/www/html/static/;
  }

  location / {
    proxy_pass http://backend-server;
  }
}

在这个示例中,我们使用了快速缓存方式。我们将静态资源的请求代理到后端服务器上,为缓存文件定义名称,并指定该缓存可以保持30天。同时,我们定义了其他请求都代理到后端服务器上。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nginx缓存以及清除缓存的使用 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Linux-nginx.conf配置文件模板

    user  nginx;    #修改nginx服务的运行用户为nginx,此用户提前在系统创建worker_processes  4;    #nginx运行进程的个数设置为4worker_cpu_affinity    0001    0010    0100    1000;    #设置CPU亲和力,此处为四核四线程 #error_log  logs…

    Nginx 2023年4月10日
    00
  • Linux 10.21Nginx架构分析

    Nginx模块化   Nginx基于模块化设计,每个模块是一个功能实现,分布式开发,团队协作   Nginx涉及到的模块分为五大类:核心模块、标准HTTP模块、可选HTTP模块、邮件模块、第三方模块     编译后的源码目录 /usr/local/src/nginx-1.14.0/objs/ngx_modules.c Nginx的web请求机制    并行处…

    Nginx 2023年4月11日
    00
  • 一文带你搞懂什么是Nginx服务器

    一文带你搞懂什么是Nginx服务器 Nginx服务器是一种轻量级的Web服务器和反向代理服务器。它被设计用来处理高并发的网络请求和静态资源的分发,同时对于动态Web应用具有较好的性能表现。 Nginx服务器的基本特性 轻量级:Nginx的设计理念是高性能、低内存占用,擅长处理高并发连接和静态文件请求,适合用作静态资源服务器或反向代理服务器。 高性能:相比于传…

    Nginx 2023年5月16日
    00
  • 开启php-fpm和nginx状态监控

    工作中需要监控php-fpm和nginx状态,从网上找了些资料,整理如下 开启php-fpm 修改php-fpm.conf文件配置 去掉该项前分号  在nginx.conf 里插入以下配置 location ~ ^/(status|ping)$ { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fa…

    Nginx 2023年4月12日
    00
  • Nginx服务器中处理AJAX跨域请求的配置方法讲解

    为了让大家更好地了解“Nginx服务器中处理AJAX跨域请求的配置方法”,我来给大家讲解一下完整攻略。 环境搭建 在开始之前,我们需要先安装好Nginx服务器,并配置好相关的环境。这里具体的安装和配置方法会略过,大家可以参考相关的文档进行操作。 处理AJAX跨域请求 在Nginx服务器中处理AJAX跨域请求,我们需要使用Nginx的CORS(Cross-Or…

    Nginx 2023年5月16日
    00
  • php的getallheaders函数在nginx下失效的解决办法

    今天将apache下的php应用部署到了nginx上,却发现报错:找不到getallheaders()这个函数。 很惊奇,这不是php的默认函数么,怎么给我找不到了。但问题就是出现了,只能去找解决方法。 原来此函数是apache_request_headers()函数的别名,看到了吧,带有apache的血统,因此nginx不能用很正常了。 找到原因了,还是需…

    Nginx 2023年4月11日
    00
  • Nginx配置详解(推荐)

    以下是“Nginx配置详解(推荐)”的完整攻略,包含两条示例说明。 Nginx配置详解(推荐) Nginx是一个高性能的Web服务器,用于提供静态内容、反向代理、负载均衡等。在使用Nginx时,需要进行一定的配置才能满足自己的需求。下面是一些常用的Nginx配置示例。 示例一:反向代理 反向代理是一种常见的Nginx使用场景,可以用于负载均衡、实现动态网站等…

    Nginx 2023年5月16日
    00
  • Nginx处理http请求的11个阶段

    nginx将一个HTTP请求分为11个处理阶段,这样做让每个HTTP模块可以仅仅专注于完成一个独立,简单的功能。而一个请求的完整处理过程可以由多个HTTP模块共同合作完成。可以极大的提高多个模块合作的协同性,可测试性,可扩展性。换言之,nginx在处理每一个http请求,和配置文件上的顺序没有关系。 post-read 接受到完整的http头部后,读取请求内…

    Nginx 2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部