Nginx - linux 缓存与反向代理缓存
缓存类型
- 浏览器缓存:
- nginx缓存:
- 缓存在nginx端,提升所有访问nginx端的用户
- 提升访问上游(upstream)服务器的速度
- 用户访问仍会产生请求流量
- 反向代理缓存:
- 在nginx设置临时存储空间,生成缓存文件,用户之后的访问将请求缓存
- 提升用户访问服务端速度与体验
Nginx缓存
- 在nginx location 模块中定义
- 正整数 + 时间单位(s、m、h、d等)表示缓存有效时间,例如:expires 10s,有效期 10秒
- 负整数 + 时间单位(s、m、h、d等)表示缓存已过期时间,例如:expires -1h,已过期1小时
- @ + 时间格式,表示到达指定时间缓存过期,例如:@22h30m,每天晚上10点半缓存清空,重新生成
- epoch 不设置缓存时间,不使用缓存
- off 关闭缓存,不使用缓存
- max 将缓存有效期设置为最大,永久有效的意思
location /files {
alias /home/chenyb;
# expires 10s;
# expires @22h30m;
# expires -1h;
# expires epoch;
# expires off;
expires max;
}
反向代理缓存
- 在nginx http 模块中定义
- proxy_cache_path 设置缓存目录
- keys_zone 设置共享内存以及占用空间大小
- max_size 设置缓存大小
- inactive 超过此时间则被清理
- use_temp_path 临时目录,使用后会影响nginx性能
# proxy_cache_path 设置缓存目录
# keys_zone 设置共享内存以及占用空间大小
# max_size 设置缓存大小
# inactive 超过此时间则被清理
# use_temp_path 临时目录,使用后会影响nginx性能
proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1h use_temp_path=off;
- 在nginx location 模块中引用
- proxy_cache + keys_zone名称,开启缓存
- proxy_cache_valid 针对状态码设置
location / {
proxy_pass http://tomcats;
# 启用缓存,和keys_zone一致
proxy_cache mycache;
# 针对200和304状态码缓存时间为8小时
proxy_cache_valid 200 304 8h;
}