请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

nginx 缓存配置

老师,您好,如果我 静态缓存 不配置在proxy 负载均衡服务器上,直接配置到web server(比如有个文件是detial.html,其文件位置就在 Nginx_web_server01 上),直接利用web_server 中开辟的静态资源缓冲buffer ,请问这样的配置会生效吗,或者说不将静态缓存配置到nginx_proxy01上,这样做意义大吗?

如下图所示:

https://img1.sycdn.imooc.com/szimg//598dc3390001eac407410510.jpg

正在回答

2回答

你好,你的问题很好,也让我一目了然。

回答你问题前,我想说下你提到的“buffer”,Nginx的proxy_cache不会通过内存来存储缓存文件,是将文件缓存到硬盘中,如果想利用内存的方式,需要通过操作系统作一块内存设备进行mount,而这种方式用的是内存中的cache而不是buffer。

下面回答下你的问题:

问题1、我觉得这样作的意义不大,原因1、你本身Nginx2上就作了静态资源服务了,而且也是用的Nginx作。原因2、Nginx1和Nginx2都在一个局域网,如果不是上万并发的考虑、或者后端有什么其他的瓶颈影响,对于存在网络的消耗可以几乎忽略不计。

问题2、如果nginx_web3能直接对外访问,这样作是有意义的,因为请求经过多次代理、数据包转发,这个对于http响应延时是会增加的,也会对服务器造成额外性能损耗。

0 回复 有任何疑惑可以回复我~
  • 提问者 mark_fork #1
    感谢 JesonChen 老师的回答。
    您的回答让我明确了以下几个问题:
    1.buffer 与 cache 的区别,我查了下维基百科,
    buffer(缓冲)是为了提高内存和硬盘(或其他I/0设备)之间的数据交换的速度而设计的。
    cache(缓存)是为了提高cpu和内存之间的数据交换速度而设计。
    这个问题已经明确。
    
    2.对于我提的第一个问题 --“负载均衡代理服务器与源文件所在的web Server在同一内网内在不考虑大并发情况下,内网服务器之间的网络 I/O可忽略不计。
    我是否可以理解为,有一种场景使用此种服务器架构是有效的,如,从上海访问美国的服务器,我可以假设一台在上海的负载均衡服务器,将美国服务器响应的静态资源缓存在上海的代理服务器上?这样应该是大有裨益的,不知我这样理解是否正确?
    
    3.单独的nginx web Server 开启proxy_cache 也是可以的,也就是说并非 proxy_cache 静态缓存配置一定要配置在代理服务器上。我这样理解对吗?
    
    4.由您回答我先前提问中的第二个问题,我有了新的疑问,这个我在网上没有找到明确的解释,所以请教下您。新的问题是,既然我单台 nginx_web_03 上存有源文件 detial01.html(存储于硬盘之上),那么我在本机 webServer 开启了静态缓存,因 您之前的回答 “Nginx的proxy_cache不会通过内存来存储缓存文件,是将文件缓存到硬盘中”,那么我的缓存文件也存储在硬盘之上,源文件也存储在硬盘之上,服务器上资源的响应都是要从硬盘上读取文件,请问这样的在硬盘之上的缓存,能提高服务器资源响应性能的原理又在哪里呢?
    
    我问的问题有可能多了点,还请老师解答下,不胜感激。
    谢谢!
    回复 有任何疑惑可以回复我~ 2017-08-12 00:02:53
  • Jeson 回复 提问者 mark_fork #2
    问题1、网络I/O忽略不计,是集中式的部署情况,最好两台server的物理链路集中在一块。上海和美国,这个链路的问题就比较长了,延时就成了需要考虑的问题,所以这个时候,反而选择最前端的Nginx作代理合适。问题3、是的,问题 4、用Nginx作缓存的优势,在于静态资源的处理和动态内容静态化。另外,Nginx缓存不是不支持内存,只是不能直接通过Nginx开辟内存空间而已。
    回复 有任何疑惑可以回复我~ 2017-08-12 13:47:18
  • 提问者 mark_fork 回复 Jeson #3
    谢谢老师。我明白了,谢谢!
    回复 有任何疑惑可以回复我~ 2017-08-13 13:14:54
提问者 mark_fork 2017-08-12 00:05:36

感谢 JesonChen 老师的回答。 您的回答让我明确了以下几个问题:

 1.buffer 与 cache 的区别,我查了下维基百科, buffer(缓冲)是为了提高内存和硬盘(或其他I/0设备)之间的数据交换的速度而设计的。 cache(缓存)是为了提高cpu和内存之间的数据交换速度而设计。 这个问题已经明确。 


2.对于我提的第一个问题 --“负载均衡代理服务器与源文件所在的web Server在同一内网内在不考虑大并发情况下,内网服务器之间的网络 I/O可忽略不计。 我是否可以理解为,有一种场景使用此种服务器架构是有效的,如,从上海访问美国的服务器,我可以假设一台在上海的负载均衡服务器,将美国服务器响应的静态资源缓存在上海的代理服务器上?这样应该是大有裨益的,不知我这样理解是否正确? 


3.单独的nginx web Server 开启proxy_cache 也是可以的,也就是说并非 proxy_cache 静态缓存配置一定要配置在代理服务器上。我这样理解对吗?


 4.由您回答我先前提问中的第二个问题,我有了新的疑问,这个我在网上没有找到明确的解释,所以请教下您。新的问题是,既然我单台 nginx_web_03 上存有源文件 detial01.html(存储于硬盘之上),那么我在本机 webServer 开启了静态缓存,因 您之前的回答 “Nginx的proxy_cache不会通过内存来存储缓存文件,是将文件缓存到硬盘中”,那么我的缓存文件也存储在硬盘之上,源文件也存储在硬盘之上,服务器上资源的响应都是要从硬盘上读取文件,请问这样的在硬盘之上的缓存,能提高服务器资源响应性能的原理又在哪里呢?


 我问的问题有可能有点多,还请老师解答下,不胜感激。

 谢谢!

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信