nginx 缓存配置

nginx 有两种缓存类型,一是普通的静态资源缓存,二是做反向代理时的上游缓存。

静态资源缓存

## 使用 expires 语句
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { # 匹配图片、js、css 文件
   expires 15d; # 设置过期时间为 15 天
}

## 其它时间单位
ms  # 毫秒
s   # 秒
m   # 分钟
h   # 小时
d   # 天
w   # 星期
M   # 月(30d)
y   # 年(365d)

# 也可以进行组合,如 1h30m 表示 1 小时 30 分钟,1y6M 表示 1 年 6 个月

upstream缓存

proxy_cache_path /usr/share/nginx/html/cache levels=1:2 keys_zone=cache:10m max_size=10g inactive=60m
use_temp_path=off;

server {
...
    location / {
        ...
        proxy_cache             cache;
        proxy_cache_use_stale   error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_cache_valid       200 304 12h;
        proxy_cache_valid       any 10m;
        proxy_cache_key         $host$uri$is_args$args;
        add_header              Nginx-Cache "$upstream_cache_status";
    }
}

# levels=1:2            两级层次结构的目录
# keys_zone             缓存区命名
# max_size              缓存上限值
# inactive              缓存过期时长
# use_temp_path=off     将在缓存这些文件时将它们写入同一个目录下
# proxy_cache_use_stale 当出现相应的错误时,不返回错误信息,而是返回已缓存的内容
# proxy_cache_valid     指定状态的缓存过期时长
# proxy_cache_key       根据key映射成一个hash值,然后保存至本地文件