nginx-proxy反向代理流程

1.浏览器发送请求数据到nginx。

nginx-proxy反向代理流程_第1张图片

2.nginx先处理请求头,后处理请求体。

client_header_buffer_size                 #ginx可设置客户端上传header缓冲区大小

client_body_buffer_size                        #nginx可设置客户端上传数据缓冲区大小

client_body_temp_path                        #缓冲区不够用向磁盘缓存大小

client_max_body_size                        #限制上传body数据大小,在用户上传时,在http头中会标记content-length大小,以此判断。

client_body_timeout                                #建立tcp连接后不动了的超时时间

client_header_timeout                                #针对header的超时时间

3.nginx在处理body请求体的过程中,可以设置client_boduy_buffer_size这个参数用来设置body缓冲区大小。nginx-proxy反向代理流程_第2张图片

4.proxy_request_buffering:该参数设置nginx在读取body请求体过程中是否想上有服务器进行传输,设置on是等完全读到请求体后再向上游服务器发送数据,设置off则是一边读body一边向上游服务器发送数据。

5.读到数据后,根据upstream配置的服务器列表向上游服务器发送数据。

6.加入epoll事件队列,出发回调函数。发送到上游服务器。上游服务器收到请求后返回数据。

nginx接收到请求后触发epoll事件,调用回调函数处理请求。

7.nginx接收上游服务器的数据,在反向代理的网络中,nginx和上游服务器的网络很有可能是内网,网络速度快,如果上有服务器返回数据大,nginx中proxy_buffering如果设置成off,那么nginx对于上游读取到的数据完全不做缓冲,即读多少,向下游发多少,这样会造成nginx与上游服务器的tcp网络一直不能中断。

所以我们可以将proxy_buffering设置成on,那么可以将上游传输的数据缓冲到nginx中,并释放与上游服务器的tcp连接或者复用该连接,同时向下游服务器传输数据。

proxy_buffer_size                #缓冲header里面的数据

proxy_buffering on;                #是否将数据读取到缓冲区。

proxy_buffers 32 64k;                #缓冲区32个64k的内存块

proxy_max_temp_file_size        #像磁盘中写入的数据最大值,默认1G。

proxy_temp_path                        #写入路径

proxy_temp_file_wirte_size                #向临时缓冲区写文件,每次写入大小。

nginx-proxy反向代理流程_第3张图片

你可能感兴趣的:(nginx,服务器,linux)