nignx反响代理缓存设置


   nginx反向代理模块:ngx_http_proxy_module


   ngx_http_proxy_module模块允许请求被传送到其它服务器上,即使用此nginx服务器作为代理前端,将用户请求根据指定的算法分发到后端应用服务器上。


常用命令:

   proxy_buffer_size size;    设置缓冲区的大小为size。nginx从被代理的服务器上读取响应时,使用该缓冲区保存相应的开始部分,即通常是一个相应头。


   proxy_buffering on|off;    代理的时候开启或关闭缓冲后端服务器的相应。当开启时,nginx尽可能快的从被代理的服务器中接受相应,并将它存入proxy_buffer_size和proxy_buffers指令设置的缓冲区中。如果无法完全存入内存,那么其中一部分将存入磁盘上的临时文件;当关闭时,收到响应后,nginx立即将其同步传给客户端,nginx不会尝试从被代理的服务器读取整个请求,而是将proxy_buffer_size指令指定的大小作为一次读取的最大长度。


   proxy_buffers number size;    为每个连接设置缓冲区的数量为number,每块缓冲区的大小为size。这些缓冲区用于保存从被代理的服务器读取的相应。每块缓冲区默认等于一个内存页的大小。


  proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshould=time];    设置缓存的路径和其它参数。一般nginx在内存中缓存的是“文件描述符”,而此硬盘中指定的文件用于缓存被代理服务器返回的数据。levels参数定义了缓存的层次结构。所有活动的键和缓存数据相关数据相关的信息都被存放在共享内存中,共享内存通过keys_zone参数的name和size来定义,inactive指定缓存时间。如果缓存文件中的数据超过max_size参数设置的最大值,使用LRU算法移除缓存数据。nignx启动后会启动一个进程cache_loader,该进程将文件系统上保存的过去缓存数据的相关信息重新加载到共享内存,加载过程分多次迭代完成,每次迭代,进程只加载不多于loader_files参数指定的文件数(默认100),每次迭代的持续时间不能超过loader_threshould参数的值(默认200ms),每次迭代之间,nginx的暂停时间由loader_sleep参数指定(默认50ms)。


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

默认为off。如果后端服务器出现状况,nginx可以使用过期的相应缓存,这条指令就是定义何种条件下开启此机制。updating参数允许nginx在正在更新缓存情况下使用过期的缓存响应,这样可以使更新缓存数据时,访问源服务器的次数最少。


  proxy_cache_valid [code...] time;为不同的响应状态码设置不同的缓存时间。

如果仅仅指定time,如:

   proxy_cache_valid 5m;

表示只有状态码为200,300,302的响应会被缓存。

状态码可以使用any参数,表示可以缓存任意响应。


  proxy_connect-timeout time;设置与后端服务器建立连接的超时时间,应该注意这个超时不应大于75秒。