1.Proxybuffer代理服务器可以缓存一些响应数据以减少I/O损失,数据默认保存在内存中,当内存不足时,会保存在硬盘中。proxy_bufferingproxy_buffering该参数用于控制是否开启后端响应内容的缓冲。如果关闭此设置,则proxy_buffers和proxy_busy_buffers_size两条指令将无效。但是不管proxy_buffering是否开启,对proxy_buffer_size都是有效的。当proxy_buffering开启时,nignx会将后端返回的内容先放到buffer中,然后再返回给客户端(边传边收,不是全部收到再传给客户端)。临时文件由两个指令proxy_max_temp_file_size和proxy_temp_file_write_size决定。如果关闭了proxy_buffering,nginx会立即将从后端收到的响应内容传输给客户端,每次fetch的大小就是proxy_buffer_size的大小,效率肯定会比较低。注意:当启用proxy_buffering时,请注意不要使用太大的代理缓冲区。这会耗尽您的内存并限制代理可以支持的最大并发连接数。语法:proxy_bufferingon|off;Default:proxy_bufferingon;Context:http,server,locationproxy_buffer_size后端服务器的响应头会放在proxy_buffer_size中,默认等于proxy_buffers中设置的单个buffer的大小。proxy_buffer_size只是响应头的缓冲区,没必要设置太大。Syntax:proxy_buffer_sizesize;Default:proxy_buffer_size4k|8k;Context:http,server,locationproxy_buffersproxy_buffers的缓冲区大小一般设置的比较大,以应对大网页。proxy_buffers中单个buffer的大小由系统的内存页大小决定,Linux系统中一般为4k。proxy_buffers由缓冲区计数和缓冲区大小组成。总大小为数量*大小。如果某些请求的响应过大,超过_buffers的部分会被缓冲到硬盘(缓冲目录由_temp_path命令指定),当然这样会减慢读取响应的速度,影响用户经验。可以使用proxy_max_temp_file_size指令关闭磁盘缓冲。语法:proxy_buffersnumbersize;默认:proxy_buffers84k|8k;上下文:http,server,locationproxy_busy_buffers_sizeproxy_busy_buffers_size不是一个独立的空间,它是proxy_buffers和proxy_buffer_size的一部分Nginx在没有完全读取后端响应的时候就会开始向客户端发送数据,所以它会留出一部分缓冲区给客户端发送数据(这部分的大小由proxy_busy_buffers_size控制,建议proxy_buffers是中单个缓冲区大小的2倍),然后它继续从后端取数据,并在缓冲区满时将其写入磁盘上的临时文件。语法:proxy_busy_buffers_sizesize;默认:proxy_busy_buffers_size8k|16k;上下文:http,server,location2。重新定义或添加传递给代理服务器的请求头proxy_set_closerContext;texthttp,server,location允许重新定义或添加传递给代理服务器的请求标头。值可以包含文本、变量或它们的组合。当前配置层级没有定义proxy_set_header指令时,配置继承自上一层级。默认情况下,只会重新定义两个请求标头:proxy_set_headerHost$proxy_host;proxy_set_header连接关闭;如果启用缓存,来自原始请求“If-Modified-Since”、“If-Unmodified-Since”、“If-None-Match”、“If-Match”、“Range”和“If-”的请求标头Range”不会被代理服务器传递。请求头“Host”不能被代理服务器通过如下配置替换:proxy_set_headerHost$http_host;3.代理超时proxy_connect_timeout语法:proxy_connect_timeout时间;默认:proxy_connect_timeout60s;上下文:http,server,location将Nginx定义为代理,后端服务器之间的连接超时时间,默认为60秒,需要注意的是这个超时时间通常不能超过75秒proxy_read_timeout语法:proxy_read_timeout时间;默认:proxy_read_timeout60s;context:http,server,location定义从代理服务器读取响应的超时时间,默认为60秒。超时只设置在连续两次读取操作之间,而不是整个响应的传输。如果代理服务器没有在此时间内传输任何数据,连接将关闭。proxy_send_timeout语法:proxy_send_timeouttime;默认:proxy_send_timeout60s;上下文:http,server,location定义了向代理服务器发送请求的超时时间,默认为60秒。超时仅设置在两个连续的写操作之间,而不是整个请求的传输。如果代理服务器在这段时间内没有收到任何数据,则连接关闭。4.代理常用配置注解location/{#配置反向代理到本机8080端口proxy_passhttp://127.0.0.1:8080;#配置请求客户端的真实Host信息proxy_set_headerHost$http_host;#配置真实请求用户IP信息proxy_set_headerX-Real-IP$remote_addr;#连接超时为30秒proxy_connect_timeout30;#读取响应超时为60秒proxy_send_timeout60;#发送请求超时为60秒proxy_read_timeout60;#打开代理缓冲区proxy_bufferingon;#响应头的缓冲区设置为32kproxy_buffer_size32k;#网页内容缓冲区个数为4个,单个大小为128kproxy_buffers4128k;proxy_busy_buffers_size256k;#最大缓冲临时文件为256kproxy_max_temp_file_size256k;}
