问题复现:
curl -vvv https://xxx.com/foo?a=xxx
的时候由于数据量比较大但会的结果会被截断.提示: transfer closed with bytes remaining to read
服务端的tornado的log提示已经正常返回.
而curl -vvv http://xxx.com:8001/foo?a=xxx
的时候是正常返回.没有被截断
nginx+tornado结构如下:
- nginx 反代tornado的8001端口具体代码如下:
server{
listen 443 ssl;
server_name xxx.com;
ssl on;
ssl_certificate server_name.crt;
ssl_certificate_key server_name.key;
location /a{
proxy_pass http://xxx.com:8001; #此处是tornado的端口
}
}
- torrnado仅作为api提供者.问题不出现在这,不必描述.
问题解决:
有上述复现条件可推断出问题出现在nginx反代的过程中.
返回的结果大小为47k处被截断(一共大于50k)
由nginx 文档得出:
反代默认缓存40k并且是打开状态
解决方法 关闭缓存或者加大缓存空间.
加大空间:
proxy_buffering on;
proxy_buffer_size 99999k;
proxy_buffers 100 99999k;#比较猥琐...
关闭缓存:
proxy_buffering off;
© 著作权归作者所有
文章评论(0)