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
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!

后台回复【架构】即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》