当前位置:首页 » 文件管理 » nginx代理不缓存

nginx代理不缓存

发布时间: 2025-03-26 08:10:31

① nginx缓存(proxy_cache模块)

缓存的基本思想是利用客户端访问的时间局限性,将客户端访问过的内容做一个副本,在一定时间内存放到本地,当改数据下次被访问时,不必连接到后端服务器反复去查询数据,而是由本地保存的副本响应数据。

保存在本地的这些副本具有一个过期时间,超过该时间将会更新。判断一个副本数据是否为过期数据的办法有很多,可以使用保留时间来判断,也可以使用数据完整度来判断。

许多Web服务器还具有校验功能,就是当某些副本数据过期以后,先向后端服务器发送校验请求,后端服务器对这些数据进行校验,如果发现原数据和副本没有差别,则将过期副本重新置为可用副本。

以上nginx配置结合使用:

proxy_params文件的配置如下:

访问一次页面,并向 http://www.blogs-s.com:8080/api/ 发起一个接口数据请求,查看/cache/nginx目录下的缓存结果:

ngx_cache_purge是nginx的第三方模块,能够帮助我清除nginx中的缓存。

在之前的nginx编译安装中我们是没有把缓存的清除模块ngx_cache_purge编译进去的,如果启动了缓存,没有安装这个模块,在之后的调试中我们尝试去清除缓存时,将会出现异常:

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

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

配置nginx:

再一次启动nginx成功;

接下来进行缓存清除测试,访问: http://blogs.com/clear_cache/api/index.php , 访问这个连接将会清除接口: http://blogs.com/api/index.php 的缓存数据。

结果如下:

在项目开发中,不可能出现什么都需要缓存的数据,缓存仅仅适合去缓存查询频繁,但是不需要实时更新的数据,这个是它适合的场景,而我们上面的配置,只要是访问api接口目录就会缓存接口的数据,这样对于一些需要实时更新的接口数据来说是不合理的,需要控制好nginx的缓存去缓存什么以及不缓存什么

set 指令为变量设置,proxy_no_cache参数中的值可以设置多个,但是多个值中,只要有一个是不为0的,就会通过缓存响应数据。

该指令用于配置一块公用的内存区域的名称,该区域可以存放缓存的索引数据。这些数据在Nginx服务器启动时由缓存索引重建进程负责建立,在Nginx服务器的整个运行过程中由缓存管理进程负责定时检测过期数据,检索等管理工作。

该指令用于配置Nginx服务器向客户端发送响应数据时,不从缓存中获取的条件。这些条件支持使用Nginx 配置的常用变量。

看一个例子:

其中,Scookie_nocache、Sarg_nocache、Sarg_comment、Shttp_pragma 和Shttp_authorization 都是Nginx配置文件的变量,

该指令用于设置Nginx服务器在内存中为缓存数据建立索引时使用的关键字

如果我们希望缓存数据包含服务器主机名称等关键字,则可以将该指令设置为:

该指令用于设置是否开启缓存的锁功能。在缓存中,某些数据项可以同时被多个请求返回的响应数据填充。开启该功能后,Nginx服务器同时只能有一个请求填充缓存中的某一数据项,这相当于给该数据项上锁,不允许其他请求操作。其他的请求如果也想填充该项,必须等待该数据项的锁被释放。这个等待时间由 proxy_cache_lock_timeout 指令配置。

该指令用于设置缓存的锁功能开启以后锁的超时时间。具体细节参见proxy_cache_lock 指令的相关内容

其中,time为设置的时间,默认为5s。

该指令用于设置客户端请求发送的次数,当客户端向被代理服务器发送相同请求达到该指令设定的次数后,Nginx服务器才对该请求的响应数据做缓存。合理设置该值可以有效地降低硬盘上缓存数据的数量,并提高缓存的命中率。

其中,number为设置的次数。默认设置为1。

该指令用于设置Nginx服务器存储缓存数据的路径以及和缓存索引相关的内容

该指令设置比较复杂,一般需要设置前面三个指令的情形比较多,后面的几个变量与Nginx服务器缓存索引重建进程及管理进程的性能相关,一般情况下保持默认设置就可以了。我们来看几个简单的配置实例:

如果Nginx在访问被代理服务器过程中出现被代理的服务器无法访问或者访问错误等现象时,Nginx服务器可以使用历史缓存响应客户端的请求,这些数据不一定和被代理服务器上最新的数据相一致,但对于更新频率不高的后端服务器来说,Nginx服务器的该功能在一定程度上能够为客户端提供不间断访问。该指令用来设置一些状态,当后端被代理的服务器处于这些状态时,Nginx服务器启用该功能。

该指令可以支持的状态如语法结构中所示。

该指令可以针对不同的HTTP响应状态设置不同的缓存时间,

该指令同于配置在什么情况下不使用cache功能

该指令配置是否在本地磁盘缓存来自被代理服务器的响应数据。这是Nginx服务器提供的另一种缓存数据的方法,但是该功能相对 Proxy Cache简单一些,它不提供缓存过期更新、内存索引建立等功能,不占用内存空间,对静态数据的效果比较好。

Proxy Store方法多使用在被代理服务器端发生错误的情况下,用来缓存被代理服务器的响应数据。

该指令用于设置用户或用户组对Proxy Store缓存的数据的访问权限,

有关Proxy Store方法的使用,我们通过官方给出的实例加深理解,在该实例中笔者通过注释对配置做了说明:

② Nginx的反向代理:实现灵活的请求转发和内容缓存

深入探讨Nginx的反向代理功能,旨在实现灵活的请求转发和内容缓存,以优化网站性能和用户体验。Nginx作为强大的代理服务器,不仅能够将客户端请求转发至不同的后端服务器,还能进行负载均衡和动态请求分发。此外,其内容缓存功能也值得深入研究,通过配置和优化缓存策略,可以显着提升网站响应速度。

一、代理服务器的简介

代理服务器用于在多个服务器之间分配负载、展示不同网站的内容,或通过HTTP以外的协议传递请求至应用服务器。通过合理配置,代理服务器能够提供高效、流畅的网络服务。

二、请求传递给代理的服务器

通过在Nginx中使用proxy_pass指令,可以将请求转发至指定的代理服务器。例如,将请求传递至域名或IP地址,甚至包括端口号,实现与外部服务器的通信。

三、代理多个服务器

使用upstream指令,Nginx能够代理多个服务器。通过调整weight参数实现负载均衡,确保资源在服务器间均衡分配,提高服务稳定性。

四、实现负载均衡

负载均衡是通过weight参数来调整权重实现的,确保不同服务器能够根据权重接收请求,有效利用资源。此外,Nginx还支持代理本机服务器,灵活性更强。

五、RESTful介绍

RESTful架构简化了资源访问地址模式,使得Nginx配置文件更简洁、易于维护。利用RESTful,可以更高效地管理资源,降低配置复杂性,同时支持模块化配置,提高可扩展性。

六、Nginx conf中http与server的关系

Nginx配置文件中的http与server块的关系是N对N,但实际实现过程中通过代码逻辑细化为1对N,简化了复杂流程,便于操作和维护。

七、进阶:Nginx基础组件使用

学习Nginx源码提供的基础组件,如ngx_str、list、queue、hash、array等,有助于更深入地理解Nginx工作原理。 ngx_str组件提供了字符串操作功能,对于日常开发和配置优化至关重要。

总结

掌握Nginx反向代理的配置与优化,能够显着提升网站性能和用户体验。关注技术分享公众号《Lion 莱恩呀》,获取更多学习资源和深入探讨。对C/C++、Linux系统及云原生技术感兴趣的读者,可访问链接了解白金学习卡,覆盖从基础架构到高性能技术的全面学习内容。

③ 请问Nginx缓存不起作用的原因,感谢大家。

200:服务器已成功处理了请求,这表示服务器提供了请求的内容。=== 如果不想让代理或浏览器缓存,加no-cache参数 add_header Cache-Control no-cache;这样浏览器F5...

④ Nginx作为缓存服务

  上一篇文章讲了Nginx作为代理服务的使用方式,这篇文章我们讲一讲Nginx作为缓存服务是怎么工作的,以及实战的使用。
  先看一张图:

  面对第一次客户端的应用Nginx需要从后端的服务获取数据,对于后续的请求,Nginx若进行了缓存就不再从后端服务获取数据。

语法:proxy_cache_path path [levels=levels].只能用在http中。

  proxy_cache zone | off。默认是关闭的,可以用在http,server,location中。

访问zzm这个路径的时候,会返回配置文件中的spring.s项,具体值可以参考我们的启动设置:

三个后台金正分别对应6000端口,6001端口,6002端口

所以我们访问ip:port/zzm的时候会自动去访问后台

我们首先注释掉proxy_cache zzm_cache;进行访问,也就是没有缓存的情况下,访问3次:

我们可以看到没有缓存的情况下,会进行轮询访问,每次访问的结果不一样,而且我们的缓存路径什么都没有,让我想起了一首歌空空如也:

好奇的看了下目录下的文件内容:

add_header Nging-Cache "$upstream_cache_status";

当我们没有缓存的时候,我们可以看到应答会是MISS:

现在nginx.conf中加入新的配置项:

此时我们怒刷前端页面,会发现后端日志如下:

Nginx的缓存服务就讲到这里,欢迎大家指正

⑤ Nginx缓存&优雅清除缓存

Nginx作为高性能的web服务器,其缓存功能对于提升页面响应速度和减轻后端压力至关重要。浏览器缓存流程涉及用户本地存储,当缓存失效时,Nginx作为缓存服务器能从web缓存获取数据。Nginx的缓存配置主要包括以下几点:


1. Nginx缓存配置



  • proxy_cache和proxy_cache_path: 定义缓存存放路径和相关参数,如proxy_cache zone默认关闭,而proxy_cache_path用于指定路径和缓存策略。

  • proxy_cache_valid: 设置缓存有效期,区分缓存过期和删除,inactive参数决定缓存未访问的清理时间,proxy_cache_valid则控制缓存时间。

  • proxy_cache_bypass和proxy_no_cache: 分别配置不走缓存和不缓存的条件,如资源更新、缓存使用次数等。


2. Nginx缓存管理


以一个示例说明:配置Nginx缓存服务器和服务端,通过访问缓存路径测试缓存状态(如初次访问为MISS,后续为HIT,过期后为EXPIRED)。如果服务端内容变更,需要清除对应缓存,可以使用ngx_cache_purge模块。


3. Nginx缓存清除


使用ngx_cache_purge模块可删除特定缓存,例如访问/purge/路径删除指定缓存。

⑥ nginx 反代里缓存怎么清理

最简单的反代+全缓存脚本

#新建2个目录,放置缓存文件:

mkdir -p /home/cache/path

mkdir /home/cache/temp

修改/usr/local/nginx/conf/nginx.conf的http层,添加以下代码:

client_body_buffer_size 512k;

proxy_connect_timeout 5;

proxy_read_timeout 60;

proxy_send_timeout 5;

proxy_buffer_size 16k;

proxy_buffers 4 64k;

proxy_busy_buffers_size 128k;

proxy_temp_file_write_size 128k;

proxy_temp_path /home/cache/temp;

proxy_cache_path /home/cache/path levels=1:2 keys_zone=cache_one:10m inactive=7d max_size=30g;

#500m是内存占用,7d是7天无访问删除,30g是缓存占具硬盘空间

#limit_zone crawler $binary_remote_addr 10m; #这段是用于限制单ip连接数的,如果频繁出现后端负载过大可以尝试去掉#。

(6)nginx代理不缓存扩展阅读:

nginx仅仅处理静态页面,动态的页面(php请求)统统都交付给后台的两台apache来处理。也就是说,可以把网站的静态页面或者文件放置到nginx的目录下;动态的页面和数据库访问都保留到后台的apache服务器上。

假设前端nginx(为127.0.0.1:8080)仅仅包含一个静态页面index.html;后 台的两个apache服务器(分别为localhost:80和158.37.70.143:80),一台根目录放置phpMyAdmin文件夹和 test.php(里面测试代码为print "server1";),另一台根目录仅仅放置一个test.php(里面测试代码为print "server2";)。

⑦ nginx 缓存机制

Nginx缓存的基本思路
基本思想是利用客户访问的时间局部性原理,对客户已经访问过的内容在Nginx服务器本地建立副本,这样在一段时间内再次访问该数据,就不需要通过Nginx服务器再次向后端服务器发出请求,所以能够减少Nginx服务器与后端服务器之间的网络流量,减轻网络拥塞,同时还能减小数据传输延迟,提高用户访问速度。同时,当后端服务器宕机时,Nginx服务器上的副本资源还能够回应相关的用户请求,这样能够提高后端服务器的鲁棒性。

对于缓存,我们大概会有以下问题:
(1)缓存文件放在哪儿?
(2)缓存的空间大小是否可以限定?
(3)如何指定哪些请求被缓存?
(4)缓存的有效期是多久?
(5)对于某些请求,是否可以不走缓存?

解决这些问题后,nginx的缓存也就基本配置完成了,下面看详细配置过程
开启缓存

要使用缓存,首先要使用 proxy_cache_path 这个指令(必须放在 http 上下文的顶层位置),然后在目标上下文中使用 proxy_cache 指令

配置示例

proxy_cache_path 有两个必填参数,第一个参数为 缓存目录,第二个参数keys_zone指定缓存名称和占用内存空间的大小(注:示例中的10m是对内存中缓存内容元数据信息大小的限制,如果想限制缓存总量大小,需要用 max_size 参数)

proxy_cache 的参数为之前指定的缓存名称

缓存管理的相关进程
在缓存工作中有两个附加进程:
(1)缓存管理器
定期检查缓存状态,看缓存总量是否超出限制,如果超出,就移除其中最少使用的部分
(2)缓存加载器
加载器只在nginx启动后运行一次,把缓存内容的元数据信息加载到内存空间,如果一次性加载全部缓存信息,会大量消耗资源,使nginx在启动后的几分钟里变慢,为避免此问题,有3种加载策略:
loader_threshold – 指定每次加载执行的时间
loader_files – 每次最多加载的数量
loader_sleeps – 每次加载的延时
例如:
proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200;
指定缓存哪些请求
nginx默认会缓存所有 get 和 head 方法的请求结果,缓存的key默认使用请求字符串
(1)自定义key
例如 proxy_cache_key " request_uri cookie_nocache arg_comment;
如果任何一个参数值不为空,或者不等于0,nginx就不会查找缓存,直接进行代理转发
综合示例

nginx 缓存机制
三分钟看懂Nginx服务器的缓存原理和机制

热点内容
如何实现移动端和服务器端的通信 发布:2025-03-26 21:44:36 浏览:404
androidkiller反编译闪退 发布:2025-03-26 21:40:55 浏览:866
怎么解压ghost文件 发布:2025-03-26 21:36:13 浏览:95
微信为什么一直显示存储空间不足 发布:2025-03-26 21:17:38 浏览:64
python的map 发布:2025-03-26 21:16:59 浏览:58
免费申请ftp服务器 发布:2025-03-26 21:06:54 浏览:21
反编译obj 发布:2025-03-26 20:47:55 浏览:630
打开ftp资源管理器停止工作 发布:2025-03-26 20:46:54 浏览:752
C语言链表插入和删除 发布:2025-03-26 20:45:47 浏览:453
手机什么配置才能流畅吃鸡 发布:2025-03-26 20:45:47 浏览:19