Nginx 缓存服务
nginx缓存服务器的配置主要是通过proxy_cache相关命令来实现的
也可以设置不同的location来应对,不过Nginx也有相关的参数:proxy_no_cache; 详细使用参数参考以下案例:
配置位置:
http{
......
/data/ngx_cache levels=1:2keys_zone=whsir_com:10mmax_size=10ginactive=60muse_temp_path=off;
.....
{
8080;
_name
/home/;
if ($request_uri ~ ^/(login|register|password|search)){
set $cookie_user 1 #符合要求的页面 设置为1
}
if($request_uri ~^/(login|search)){
set1;
}
location/{
whsir_com; #代表开启这个缓存
_valid20030230460m;
_key $host $request_uri $cookie_user
Host$host;
_headerX-Forwarded-For$remote_addr;
http://127.0.0.1:8080;
proxy_no_cache: $cookie_user $arg_nocache $arg_comment #当变量 $cookie_user为1 的时候不缓存
3d;
}
参数配置解释:
http内部配置参数
proxy_cache_path:定义缓存存储位置
levels=1:2:设置缓存目录深度,最多能创建3层。
keys_zone=my_cache:10m:定义缓存区域名称和内存缓存空间大小。名字为my_cache 缓存空间为10M 此名字用户后面开启代理缓存 proxy_cache使用 代表开启缓存
在共享内存中设置一块存储区域来存放缓存的key和metadata(类似使用次数),这样nginx可以快速判断一个request是否命中或者未命中缓存,
1m可以存储8000个key,10m可以存储80000个key
max_size=10g:磁盘缓存空间最大使用值,达到配额后删除最少使用的缓存文件。
inactive=60m:设置缓存时间,60分钟内没有被访问过就删除。inactive默认是10分钟。
expired只是缓存过期,但不会被删除,inactive是删除指定时间内未被访问的缓存文件
use_temp_path=off:不使用temp_path指定的临时存储路径,直接将缓存文件写入指定的cache文件中,建议为off,避免文件在不同文件系统中不必要的拷贝
如果使用
注意:缓存目录
/proxy_cache
和
/proxy_temp
一定要在同一个分区下,并且权限一定要和nginx程序权限一致(即要有写入权限,否则不能生产缓存文件)!
server内部配置参数:
proxy_cache my_cache:缓存区域名称,要和keys_zone定义的名称一致;如果proxy_cache off表示关闭掉缓存
proxy_cache_valid20030230460m:设置状态码为200302304过期时间为60分钟
proxy_cache_key:设置缓存的key,这里是以域名、URI、用户cookie,根据key值哈希存储缓存内容到二级缓存目录内
expires3d:缓存时间3天
proxy_no_cache: $cookie_user 当$cookie_user为1 的时候不缓存
参数配置完成后进行测试配置文件
nginx -t -c /etc/nginx/nginx.conf
测试完成成功时;进行加载配置
nginx -s reload -c /etc/nginx/nginx.conf