谢谢Frank Yu, tweyseo, Appla的耐心回复。我的问题已经解决了。
背景及原因如下:
- 背景:
因为cosocket stream无法支持https双向认证访问后端backend,所以选择中间增加了一级http proxy. 流程如下:
client --> oprenresty port 10261(cosocket stream) --> openresty port 10262(http proxy) --> backend server
其中:
client --> oprenresty port 10261(cosocket stream) --> openresty port 10262是http通信
openresty port 10262 --> backend server 是https通信
- 现象:
backend server返回的chunk数据5k+,分成2个packets(第一个packet带有chunk size信息,第二个packet是纯数据)。而在openresty port 10261的cosocket stream处理读取到了2个chunk数据。
- 原因:
openresty port 10262(http proxy)设置成proxy_buffer: off,造成openresty重新解包封包生成了2个chunk数据。
- 解决方案:
openresty port 10262(http proxy)其中增加proxy配置如下:
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 24 8k;
proxy_busy_buffers_size 16k;
在 2019年3月27日星期三 UTC+8下午3:58:54,
helin...@gmail.com写道: