关于nginx反向代理传输机制的总结

1) proxy_buffering这个参数用来控制是否打开后端响应内容的缓冲区,如果这个设置为off,那么proxy_buffers和proxy_busy_buffers_size这两个指令将会失效。

但是无论proxy_buffering是否开启,对proxy_buffer_size都是生效的。


2) proxy_buffering开启的情况下,nignx会把后端返回的内容先放到缓冲区当中,然后再返回给客户端(边收边传,不是全部接收完再传给客户端)。

临时文件由proxy_max_temp_file_size和proxy_temp_file_write_size这两个指令决定的。


如果proxy_buffering关闭,那么nginx会立即把从后端收到的响应内容传送给客户端,每次取的大小为proxy_buffer_size的大小,这样效率肯定会比较低。


3) 后端服务器的相应头会放到proxy_buffer_size当中,这个大小默认等于proxy_buffers当中的设置单个缓冲区的大小。

而proxy_buffers当中单个缓冲区的大小是由系统的内存页面大小决定的,Linux系统中一般为4k。

查看方法:

# getconf PAGE_SIZE

4096


虽然默认是相等的,但是proxy_buffers的缓冲区大小一般会设置的比较大,以应付大网页。而proxy_buffer_size只是响应头的缓冲区,没有必要也跟着

扩展到那么大。所以proxy_buffer_size最好单独设置,一般设置个4k就够了。



4) proxy_buffers是有缓冲区数量和缓冲区大小组成的。总的大小为number*size。

proxy_busy_buffers_size不是独立的空间,他是proxy_buffers和proxy_buffer_size的一部分。nginx会在没有完全读完后端响应的时候就开始向客户端传送数据,

所以它会划出一部分缓冲区来专门想客户端传送数据(这部分的大小是由proxy_busy_buffers_size来控制的,建议为proxy_buffers中单个缓冲区大小的2倍),然后它继续从后端取数据,缓冲区满了之后就

写到磁盘的临时文件中。


5) 临时文件由proxy_max_temp_file_size和proxy_temp_file_write_size这两个指令决定。

proxy_max_temp_file_size是临时文件的总大小,默认1024m。

proxy_temp_file_write_size是一次访问能写入的临时文件的大小,默认是proxy_buffer_size和proxy_buffers中设置的缓冲区大小的2倍,Linux下一般是8k。


参考文档:http://nginx.org/en/docs/http/ngx_http_proxy_module.html

你可能感兴趣的:(nginx)