引言
平常我们在web服务中或多或少会用到cache,这次我们说的便是nginx cache。在代理层上的cache,有别于redis或memcache那种业务cache,nginx cache多用于静态资源的cache。
什么是nginx 在哪里配置cache,我们就省略了,我们直接讲重点。
详情
- 开启Cache
在nginx.conf中加入如下代码
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=STATIC:200m
inactive=24h max_size=1g;
proxy_cache_path
指的是存放cache的位置,如果没有此文件夹,重启nginx会报错
keys_zone=STATIC:200m
表示这个zone名称为STATIC,分配的内存大小为200MB
inactive=24h
表示这个zone中的缓存文件如果在1天内都没有被访问,那么文件会被cache manager进程删除掉
-
max_size=1g
表示最大缓存大小为1G
- 对于指定的域名加上cache
我们直接上实际加入的nginx配置
location ~* (/gateway/v1/phone/getAppOtherTimeNews*|/gateway/v1/phone/newscontent*) {
client_body_buffer_size 500M;
proxy_cache STATIC;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 10m;
add_header Access-Control-Allow-Origin *;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
rewrite /gateway/v1(.+)$ $1 break;
proxy_pass http://localhost:7700;
}
location /gateway/v1 {
client_body_buffer_size 500M;
add_header Access-Control-Allow-Origin *;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
rewrite /gateway/v1(.+)$ $1 break;
proxy_pass http://localhost:7700;
}
上面我们只对于符合 /gateway/v1/phone/getAppOtherTimeNews*|/gateway/v1/phone/newscontent*
这个正则表达式的路径进行缓存,所以我们也只需要关注这个location里面的即可,对于不符合此正则表达式的会自动路由到下面的访问中。
这里的关键参数就是下面这三个。
proxy_cache STATIC;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 10m;
proxy_cache
表示缓存的空间,与前面配置的keys_zone
相符
proxy_cache_key
表示缓存的位置,有点类似于索引的意思
proxy_cache_valid
则表示缓存code为200的时间为10 分钟
这样,我们只要把配置加上,我们的缓存服务就OK了。
网友评论