Nginx缓存配置实战

缓存配置说明
先来了解一下proxy_cache缓存系统的基本配置,如下所示;

upstream test_servers {
	server 127.0.0.1:81 max_fails=5 fail_timeout=10s weight=10;
	server 127.0.0.1:82 max_fails=5 fail_timeout=10s weight=10;
	server 127.0.0.1:83 max_fails=5 fail_timeout=10s weight=10;
}
# 设置缓存空间的名字及其存放路径和存放方式
proxy_cache_path /path/cache/nginxcache levels=1:2 keys_zone=cachedata:10m max_size=10g inactive=60m use_temp_path=off;
server {
	listen 80;
	location / {
		# 指定缓存的空间大小 (这个cachedata对应上边 keys_zone=cachedata)
		proxy_cache cachedata;
		# 指定缓存的HTTP状态及缓存时间
		proxy_cache_valid 200 304 10s;
		proxy_cache_valid 301 302 100s;

		# 请求最少被访问两次才会被缓存
		proxy_cache_min_uses 2;
		
		# 指定缓存的key
		proxy_cache_key $scheme$host$uri$is_args$args;
		# 缓存的HTTP请求方法类型
		proxy_cache_methods GET HEAD;
		# 添加一个响应头,用来标识请求是否命中缓存
		add_header N-Cache-Status $upstream_cache_status;

		# 设置为on表示允许将请求的HEAD 方法给位GET方式进行缓存
		proxy_cache_convert_head on;
		
		sendfile on;

		proxy_set_header     	Host $host:$server_port;
		proxy_set_header		X-Real_IP $remote_addr;
		proxy_set_header		X-Forwarded-For $proxy_add_x_forwarded_for;
		
		# 当缓存丢失时,会去后端服务器获取数据,然后,将之返回给用户并进行缓存
		proxy_pass  http://test_servers;
	}
}

下面对proxy_cache相关配置说明如下

(1).proxy_cache_path

  1. levels 代表缓存的目录结构,如levels=1:2表示目录有两级
  2. key_zone 用来设置缓存空间的名字和大小;如 keys_zone=cachedata:100m,表示缓存名是 cachedata ,最多可以存放100MB的缓存信息
  3. max_size 最大cache空间,如果不指定,会使用掉所有disk space,当达到配额后,会删除最少使用的cache文件
  4. inactive 未被访问文件在缓存中保留时间,本配置中如果60分钟未被访问则不论状态是否为expired,缓存控制程序会删掉文件。inactive默认是10分钟。需要注意的是,inactive和expired配置项的含义是不同的,expired只是缓存过期,但不会被删除,inactive是删除指定时间内未被访问的缓存文件
  5. use_temp_path 如果为off,则nginx会将缓存文件直接写入指定的cache文件中,而不是使用temp_path存储,official建议为off,避免文件在不同文件系统中不必要的拷贝

(2).proxy_cache

启用proxy cache,并指定key_zone。另外,如果proxy_cache off表示关闭掉缓存。

(3).proxy_cache_valid

根据状态码来定义缓存的有效时间,支持多行配置,支持不同状态码配置不同的有效期

(4).proxy_cache_key

给缓存数据定义一个键,例如:

proxy_cache_key “$host$request_uri $cookie_user”;

默认情况下,该指令的值的字符串

proxy_cache_key $scheme$proxy_host$uri$is_args$args;

(5).proxy_convert_head

如果设置为 on 表示允许将请求的HEAD 方法改为 GET 方法进行缓存;如果设置为 off ,则缓存的 key 需要加上 $request_method ,即:

$host$request_rui$request_method

(6).proxy_cache_methods

指定可以被缓存的请求方法,默认值为 GET HEAD

(7).proxy_cache_methods

设置 key 在被缓存前被访问的次数,默认是1次

你可能感兴趣的:(linux)