目录
- 1. 关于缓冲区指令
- 2. 常用配置项
- 3. 其他一些配置
- 3.1 proxy_cache_lock_timeout
- 3.2 proxy_read_timeout
- 3.3 proxy_connect_timeout
- 3.4 proxy_send_timeout
- 3.5 proxy_http_version
- 3.6 proxy_ignore_client_abort
- 3.7 proxy_intercept_errors
- 3.8 proxy_next_upstream
- 3.9 proxy_cookie_domain
- 3.10 proxy_cookie_path
- 3.11 proxy_pass
- 3.12 proxy_redirect
- 3.13 proxy_set_header
- 3.14 proxy_store
- 4. 其他一些问题
- 参考网址
1. 关于缓冲区指令
1.1 proxy_buffer_size
语法: proxy_buffer_size size;
默认值: proxy_buffer_size 4k|8k;
上下文: http, server, location
- 该缓冲用于来自上游服务器响应的开始部分,在该部分通常包含一个小小的响应头
- 该缓冲区大小默认等于proxy_buffers指令设置的一块缓冲区的大小,没有必要也跟着设置太大。 proxy_buffer_size最好单独设置,一般设置个4k就够了,但它也可以被设置得更小。
- 一块缓冲区的大小通常等于一个内存页的大小(4K或者8K),获取Linux 内存页(基页)大小的命令:
getconf PAGE_SIZE
,一般的输出是4096,即 4KB。
1.2 proxy_buffering
语法: proxy_buffering on | off;
默认值: proxy_buffering on;
上下文: http, server, location
- 该指令控制缓冲是否启用。默认情况下,它的值是“on”。如果这个设置为off,那么proxy_buffers和proxy_busy_buffers_size这两个指令将会失效。 但是无论proxy_buffering是否开启,对proxy_buffer_size配置都会起作用。
- 当开启缓冲时,nginx尽可能快地从被代理的服务器接收响应,再将它存入proxy_buffer_size和proxy_buffers指令设置的缓冲区中。如果响应无法整个纳入内存,那么其中一部分将存入磁盘上的临时文件,某些请求的响应过大,则超过_buffers的部分将被缓冲到硬盘, 当然这将会使读取响应的速度减慢, 影响用户体验。通过proxy_max_temp_file_size和proxy_temp_file_write_size指令可以控制临时文件的写入。
- 当关闭缓冲时,收到响应后,nginx立即将其同步传给客户端。nginx不会尝试从被代理的服务器读取整个请求,而是将proxy_buffer_size指令设定的大小作为一次读取的最大长度(所以无论是否开启,proxy_buffer_size都起作用)。每次传输内容小了,效率肯定会有影响。
- 响应头“X-Accel-Buffering”传递“yes”或“no”可以动态地开启或关闭代理的缓冲功能。 这个能力可以通过proxy_ignore_headers指令关闭。
proxy_buffering启用时,要提防使用的代理缓冲区太大。这可能会吃掉你的内存,限制代理能够支持的最大并发连接数。
1.3 proxy_buffers
语法: proxy_buffers number size;
默认值: proxy_buffers 8 4k|8k;
上下文: http, server, location
- 为每个连接设置缓冲区的数量为number,每块缓冲区的大小为size。这些缓冲区用于保存从被代理的服务器读取的响应。
- proxy_buffers的缓冲区大小一般会设置的比较大,以应付大网页。proxy_buffers当中单个缓冲区的大小是由系统的内存页面大小决定的,Linux系统中一般为4k。 proxy_buffers由缓冲区数量和缓冲区大小组成的。总的大小为number*size。
1.4 proxy_busy_buffers_size
语法: proxy_busy_buffers_size size;
默认值: proxy_busy_buffers_size 8k|16k;
上下文: http, server, location
- 当开启缓冲响应的功能以后,在没有读到全部响应的情况下,写缓冲到达一定大小时,nginx一定会向客户端发送响应,直到缓冲小于此值。这条指令用来设置此值。
- 同时,剩余的缓冲区可以用于接收响应,如果需要,一部分内容将缓冲到临时文件。该大小默认是proxy_buffer_size和proxy_buffers指令设置单块缓冲大小的两倍。
1.5 proxy_max_temp_file_size
语法: proxy_max_temp_file_size size;
默认值: proxy_max_temp_file_size 1024m;
上下文: http, server, location
- 打开响应缓冲以后,如果整个响应不能存放