Nginx Proxy Cache原理和最佳实践(上)

简介: Nginx Proxy Cache原理和最佳实践

1 缓存概念

  • nginx缓存原理
  • image.png
  • 当第一个用户(蓝)访问网站,他的请求首先会到NGINX PROXY SERVER,随后NGNIX发往后端服务器(灰),后端会将请求的响应首先发往NGINX,由其返回给用户(蓝色),如果这个响应是可以缓存的,则NGINX会保留一份响应副本,当其他用户(橙色)发起相同的request请求时,NGINX会根据request请求的内容是否存在于缓存中,来直接返回给用户,不再经过后端。


这个场景同样适用于浏览器,CDN,用于缓存静态资源。

2 HTTP缓存机制

后端服务器会通过响应包头来定义缓存特性

  • Origin Server定义的缓存特性
  • image.png

缓存服务器可通过设置一些参数来忽略或重写后端服务器的缓存特性,但后端服务器的缓存特性也是极其重要的。


Expires

最原始的配置策略,即设置过期时间,但使用效率低下,目前绝大部分已经被Cache-Control替代


Cache-Control

定义缓存资源属性是private或public,并且设置缓存多久后过期,本例中,属性为public,60秒过期


X-Accel-Expires

只有nginx能识别的缓存特性header,优先级大于上面两个header,可以设置此header,在nginx侧来重新定义缓存特性


Etag和Last-Modified

捆绑生成的: 有些场景下,你希望client端的浏览器长时间缓存,而缓存服务器只短时间缓存文件,以至于当后端服务器更新后,缓存服务器会及时同步,我们就可以使用最后两个header,Last-Modified表示最后修改时间,并声明一个ETag(哈希值),做为缓存内容的标签,具有唯一性;客户端访问请求带有If‑Modified‑Since或者If‑None‑Match header,并申明自己的客户端带有静态缓存文件,以及文件修改日期和ETag值,如果服务器端的版本和Etag值与客户端一致,则服务端会直接返回304 not modified,这个验证流程是非常快的,并且节省网络带宽;


如果Cache-Control设置为public,则客户端不会去验证资源的有效性,将会一直使用直到过期,同时public也代表资源可以被缓存在web proxy中;


如果Cache-Control包含must-revalidate,则客户端每一次访问请求资源都会去验证缓存是否有更新;

NGINX都会缓存哪些资源

首先看下nginx proxy cache最基本的配置:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
     set $upstream http://ip:port
          location / {
                   proxy_cache my_cache;
                   proxy_pass $upstream; }
         }
目录
相关文章
|
7月前
|
缓存 JavaScript 安全
深度解析Nginx正向代理的原理与实现
深度解析Nginx正向代理的原理与实现
241 8
|
4月前
|
负载均衡 网络协议 关系型数据库
一口把LVS、Nginx及HAProxy工作原理讲清楚了。(附图)
一口把LVS、Nginx及HAProxy工作原理讲清楚了。(附图)
|
29天前
|
应用服务中间件 网络安全 nginx
轻松上手Nginx Proxy Manager:安装、配置与实战
Nginx Proxy Manager (NPM) 是一款基于 Nginx 的反向代理管理工具,提供直观的 Web 界面,方便用户配置和管理反向代理、SSL 证书等。本文档介绍了 NPM 的安装步骤,包括 Docker 和 Docker Compose 的安装、Docker Compose 文件的创建与配置、启动服务、访问 Web 管理界面、基本使用方法以及如何申请和配置 SSL 证书,帮助用户快速上手 NPM。
189 1
|
2月前
|
中间件 应用服务中间件 nginx
Nginx+uWSGI+Django原理
Nginx+uWSGI+Django原理
|
2月前
|
Java 应用服务中间件 API
nginx线程池原理
nginx线程池原理
41 0
|
5月前
|
应用服务中间件 网络安全 nginx
使用Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书
本文引导如何用Nginx Proxy Manager (NPM)配置Halo的反向代理与SSL证书。NPM简化了Nginx的配置流程,适合无Nginx基础的用户。安装NPM无需额外安装Nginx,避免端口冲突。通过`docker-compose.yaml`启动NPM服务,并映射必要的端口。配置Halo反向代理需登录NPM面板,添加代理主机,设置域名、转发IP等参数。NPM支持自动申请与续期SSL证书,确保网站安全访问。更多Halo安装细节,请参考[如何在Linux云服务器上通过Docker Compose部署安装Halo](https://zhangfeidezhu.com/?p=631).
309 0
使用Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书
|
4月前
|
域名解析 缓存 负载均衡
深度解析Nginx正向代理的原理与实现
Nginx虽然主要被用作反向代理,但也可以通过一些特殊配置用作正向代理。虽然不是它的主流用途,但它仍能以其高性能和高稳定性为用户提供代理服务。不过,出于安全性和匿名性的考虑,在使用它作为正向代理时须谨慎配置,并根据实际需求做出调整。
150 0
|
7月前
|
安全 网络协议 应用服务中间件
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
|
7月前
|
JSON JavaScript 前端开发
vue2_vite.config.js的proxy跨域配置和nginx配置代理有啥区别?
vue2_vite.config.js的proxy跨域配置和nginx配置代理有啥区别?
249 1
|
7月前
|
应用服务中间件 nginx
Nginx的referer参数的用法和原理
总结:referer参数可以用于Nginx配置,以限制或允许特定来源网站的访问,提高安全性或控制流量。它通过valid_referers指令来定义合法的Referer来源,并根据配置对请求进行处理。但需要注意,Referer字段内容可以被伪造,因此不应作为唯一的安全措施。
921 0