回答
收藏
分享
举报
NGINX proxy_buffering 指令
提问于2021-01-18 13:30

浏览 3.3k

请问,如果启用了proxy_buffering, NGINX从上游服务器读取数据时的行为是下面哪一种?


1.把所有的上游数据都先读到buffer里面,buffer不够就使用磁盘临时文件,等读完以后再传给客户端。 

2.读一部分上游响应先放到buffering里面,然后立刻发送给客户端。依次循环直到读完所有的上游返回的内容?

已修改于2023-03-16 02:24



写下您的回答
发表回答
全部回答(1)

按点赞数排序

按时间排序

第1种。参考官方文档:

“When buffering is enabled, nginx receives a response from the proxied server as soon as possible, saving it into the buffers set by the proxy_buffer_size and proxy_buffers directives. If the whole response does not fit into memory, a part of it can be saved to a temporary file on the disk. Writing to temporary files is controlled by the proxy_max_temp_file_size and proxy_temp_file_write_size directives.

When buffering is disabled, the response is passed to a client synchronously, immediately as it is received. nginx will not try to read the whole response from the proxied server. The maximum size of the data that nginx can receive from the server at a time is set by the proxy_buffer_size directive.”

赞同

2

回复举报

回答于2021-01-18 13:58



回复陶辉
回复
Rockets回复了

多谢!

0

回复举报

回答于2021-01-18 12:09



回复Rockets
回复
提问者
Rockets
这家伙很懒还未留下介绍~
0
文章
10
问答
1
粉丝
相关问答

对于数据流量过大的网络中,往往单一设备无法承担,需要多台设备进行数据分流,而负载均衡器就是用来将数据分流到多台设备的一个转发器。

   a. 软件负载均衡解决方案

  在一台服务器的操作系统上,安装一个附加软件来实现负载均衡,如Nginx负载均衡(我们管理系统平台使用的也是这款均衡器)。它的优点是基于特定环境、配置简单、使用灵活、成本低廉,可以满足大部分的负载均衡需求。

 b. 硬件负载均衡解决方案

  直接在服务器和外部网络间安装负载均衡设备,这种设备我们通常称之为负载均衡器。由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。 一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵,比如最常见的就是F5负载均衡器。

点赞 0
浏览 6.3k

有2个解决方案:

1、基于CORS,即Cross-Origin Resource Sharing,解决浏览器端的安全策略问题。又可以细分为2种,一种叫复杂请求,也就是上面dongchch的答案,对于OPTIONS请求的处理,当然后面的proxy_pass是无关的。一种叫简单请求,直接添加Access_Control_Allow-Origin头部就可以了,浏览器会处理的。

具体你可以参见我的这一课:《如何合法的跨域》https://time.geekbang.org/course/detail/100026801-98913

2、用反向代理解决。你可以直接用proxy_set_header等指令,用Nginx代理时模拟非跨域的客户端,访问实际的应用服务器,并修改应用服务器响应中的域名即可。

点赞 0
浏览 3.8k
点赞 0
浏览 1.6k