Nginx启用proxy_cache缓存的方法
顾名思义,proxy_cache是用于proxy模式(一般也可称为反代)的缓存功能。本文介绍其基本用法。
proxy_cache在Nginx配置的http段、server段(location段)中分别写入不同的配置。http段中的配置用于定义proxy_cache空间,server段中的配置用于调用http段中的定义,启用对server的缓存功能。
http段
直接以本站的配置为例:
proxy_cache_path/home/nginx/proxy_cache/cachelevels=1:2keys_zone=proxycache:60mmax_size=120minactive=2huse_temp_path=on; proxy_temp_path/home/nginx/proxy_cache/temp; proxy_cache_key$host$request_uri;
其中:
proxy_cache_path
- /home/nginx/proxy_cache/cache:定义proxy_cache生成文件的根路径
- levels:默认所有缓存文件都放在上面指定的根路径中,从而可能影响缓存的性能。推荐指定为2级目录来存储缓存文件
- key_zone:这个的值是字符串,可以随意写。用于在共享内存中定义一块存储区域来存放缓存的key和metadata(类似于使用次数),这样nginx可以快速判断一个request是否命中缓存。1m可以存储8000个key
- max_size:最大cache空间。如果不指定,会使用掉所有diskspace。当达到disk上限后,会删除最少使用的cache
- inactive:内存中缓存的过期检查周期。示例配置中如果2h内都没有被访问,则不论状态是否为expired,都会清除缓存。需要注意的是,inactive和expired配置项的含义是不同的,expired只是判断过期时间,不会删除缓存;而inactive是直接删除过期缓存
- use_temp_path:如果为off,则nginx会将缓存文件直接写入指定的cache文件中,而不使用temp_path指定的临时存储路径
proxy_temp_path
- /home/nginx/proxy_cache/temp:定义proxy_cache生成临时文件的根路径。此项在use_temp_path=off时不需填写
proxy_cache_key
- $host$request_uri:定义proxy_cache生成文件的名称。值可以为Nginx支持的变量和字符串
server段
同样以本站配置为例进行说明:
proxy_cacheproxycache; proxy_cache_valid3042h; proxy_cache_valid40344424h; proxy_cache_valid4042h; proxy_cache_valid5005022h; proxy_cache_use_staleinvalid_headerhttp_403http_404http_500http_502; proxy_cache_lockon; proxy_cache_lock_timeout5s; proxy_no_cache$proxynocache_atomxml$proxynocache_sitemapxml;
- proxy_cache:对应http段的key_zone,是你定义的proxy_cache所使用的共享空间的名称。我在上面示例中使用的名称是“proxycache”
- proxy_cache_valid:对指定的HTTP状态进行缓存,并指定缓存时间。可以自定义写入多个配置项
- proxy_cache_stale:这个可以大大减少回源次数。因此可以将inactive适当延长
- proxy_cache_lock:同样是减少回源次数。和上面的差别在于缓存是否存在
- proxy_no_cache:值为若干个变量($string),这个变量的值只有俩类,0和非0,这若干个变量中只要有一个值不为0,就不会触发缓存
我的一点经验
- 会在你指定的缓存路径下生成类似“0123456789abcdef…”这样的文件夹(当levels=2时),这些文件夹下存储着写入硬盘的缓存文件
- proxy_cache_valid缓存的状态码需要根据你的需要来定义,千万别把200写进去了
- inactive时间和valid时间需要特别注意,如果源站更新频率不怎么低,就需要根据你的需求减少这些值
- proxy_no_cache中使用的$string是通过类似“set$string1;”来定义的
- proxy_cache_use_stale和proxy_cache_lock的用法目前我也没太明白,所以解释得不太清晰,望见谅。这俩配置一般不使用也无妨
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。