Nginx Http_proxy module学习第一部分

1、响应头文件

Open Buffer{

#进行判断后端服务返回的响应文件是否大大于响应头大小设置

if proxy_buffer_size >= c.proxy_buffer_size:

   #进行缓存,每个连接缓冲区最大数量,proxy_buffers

   c.proxy_buffer_size(number,size) >> connect.hash(c.proxy_buffer_size)

else:

#存入临时文件夹

path = proxy_temp_path

#如果容量满了,不存临时目录。

if path.size if full:

sys.exit

#如果单个临时文件的大小大于后端的响应文件大小时写入临时文件

       if proxy_temp_file_write_size >= c.proxy_buffer_size:

c.proxy_buffer_size >> temp.hash(c.proxy_buffer_size)

}


Close Buffer{

#同步给客户端,然后再按照proxy_buffer_size设置的大小去取接下来的头文件并直接同步给客户端。

size = proxy_buffer_size

#不管后端的响应头信息由proxy_ignore_headers控制,不写进来了。

#如果后端服务器传递响应头关闭代理缓存则直接发送给客户端,不缓存头信息。

if realserver.X-Accel-buffering = NO:

send(c)

else:

   #获取头信息并发送给客户端

   while True:

   get.client.hearder

   send(c)

   #如果连接的缓冲满了就写临时,否则写缓冲里。注意proxy_busy_buffers_size参数

   #也就是说不管有多大都会发送完不会无故结束。

   if connect.hash(c.proxy_buffer_size) is full:

temp.hash(c.proxy_buffer_size)

   else:

connect.hash(c.proxy_buffer_size)

}


#指定用于页面缓存的共享内存,off参数可以屏蔽从上层配置继承的缓存功能。

proxy_cache zone|off


#定义nginx不从缓存取响应的条件

proxy_cache_bypass string

proxy_no_cache


#定义如何生成缓存的键default:proxy_cache_key $scheme$proxy_host$request_uri;

proxy_cache_key string; key:vaule


#定义相同的请求,同时只允许一个请求发往后端,并根据proxy_cache_key往内存中写新

#条目,直接proxy_cache_lock_time超时被释放

proxy_cache_lock on |off #default off

proxy_cache_lock_timeout time #default 5s


#设置响应被缓存的最小请求次数,即至少要请求多少次才缓存

proxy_cache_min_uses number; #default 1


#设置缓存的路径和其他参数。缓存数据是保存在文件中的,缓存的键和文件名都是在代理URL上执行MD5的结果。

#levels参数定义了缓存的层次结构。

proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size]

[loader_files=number] [loader_sleep=time] [loader_threshold=time];

#文件名是由urlmd5生成,

#为什么临时目录要和缓存目录放同一分区?因为被响应的请求首先是写入一个临时文件,然后再

#copy到缓存文件夹,如果是不同分区就要真正COPY,而同一分区就是重命名的操作,指一下metadata


#如果后端服务器出现状况,nginx是可以使用过期的响应缓存的。这条指令就是定义何种条件下允许开启此机制。

proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_404 | off ...;


#为不同的响应状态码设置不同的缓存时间。可以用any

proxy_cache_valid [code ....] time;


#设置与后端服务器建立连接的超时时间。应该注意这个超时一般不可能大于75秒。

proxy_connect_timeout time;


#nginx默认不会将“Date”、“Server”、“X-Pad”,和“X-Accel-...”响应头发送给客户端。proxy_hide_header指令则可以设置额外的响应头,

#这些响应头也不会发送给客户端。相反的,如果希望允许传递某些响应头给客户端,可以使用proxy_pass_header指令。

proxy_hide_header field;


#设置代理使用的HTTP协议版本。默认使用的版本是1.0,而1.1版本则推荐在使用keepalive连接时一起使用。

proxy_http_version 1.0 | 1.1


#决定当客户端在响应传输完成前就关闭连接时,nginx是否应关闭后端连接。

proxy_ignore_client_abort on | off;


#不处理后端服务器返回的指定响应头。

proxy_ignore_headers field ...;






你可能感兴趣的:(nginx,cache,proxy)