
nginx缓存简介
Nginx 是一款高性能的开源反向代理服务器和 Web 服务器,它提供了强大的缓存功能,用于提高网站性能和降低服务器负载。
nginx缓存配置
1.缓存的开启与关闭
location / {
proxy_pass http://backend_server;
proxy_cache my_cache;
proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
}
使用 proxy_cache 开启缓存,使用 proxy_no_cache 和 proxy_cache_bypass 关闭缓存。
2.缓存路径配置
在 Nginx 配置文件中,需要配置代理缓存路径,即定义缓存存储的位置。
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;
参数:
- levels: 定义缓存目录的层次结构。
- keys_zone: 缓存索引的内存区域,用于存储缓存键和元数据。
- max_size: 缓存最大占用的磁盘空间。
- inactive: 缓存项在多长时间内没有被访问时被认为是不活跃的。
3.缓存配置
location / {
proxy_pass http://backend_server;
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
expires 10m;
}
参数:
- proxy_cache: 指定使用的缓存区域。
- proxy_cache_valid: 定义缓存项对于不同的响应状态码的有效期。
- expires: 定义缓存的过期时间。
4.缓存清理
location ~ /purge(/.*) {
allow 127.0.0.1;
deny all;
proxy_cache_purge my_cache $1;
}
使用 proxy_cache_purge 模块实现缓存清理,即刷新缓存项。
5.缓存监控与统计
使用 ngx_http_stub_status_module 模块可以监控和统计缓存的使用情况。
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
nginx缓存原理
当有一个请求到达 Nginx,Nginx 会首先检查缓存,使用 proxy_cache_key 生成缓存键,然后查找缓存区域中是否有与该键对应的缓存项。
如果缓存中存在有效的缓存项,Nginx 直接返回缓存的响应给客户端,无需访问后端服务器。
如果缓存中不存在有效的缓存项,Nginx 将请求发送到后端服务器,获取响应数据,并将该数据存储到缓存中,同时使用 proxy_cache_valid 设置缓存项的有效期。
下一次相同的请求到达时,如果缓存项仍然有效,Nginx 将直接返回缓存的响应,否则,将重复上述的获取和缓存的过程。
nginx缓存注意
小心处理缓存一致性问题,尤其在有写操作的场景中。
调整缓存的有效期和清理机制,避免缓存雪崩和缓存过期导致的性能问题。
根据实际需求选择合适的缓存键的生成规则,确保缓存项的唯一性和正确性。
mikechen睿哥
10年+一线大厂架构实战专家,就职于阿里、淘宝等一线大厂,操盘多个亿级大厂核心项目。