上传大文件(1G)nginx 报499

504 views
Skip to first unread message

段立国

unread,
Jan 29, 2015, 10:22:34 AM1/29/15
to open...@googlegroups.com
大家好:
      请教一个问题,项目中使用nginx做http proxy,接收文件,透传给后端模块处理,上传大文件时,经常报499,查看日志是客户端主动断开连接。但是客户端是不会主动断开连接的,是不是nginx的buffer设置不合理导致了客户端一直上传不了数据,最终导致客户端断开连接,请大神们赐教。
      nginx配置如下:

    client_header_buffer_size 8k;
    client_max_body_size 5121m;
    large_client_header_buffers 4 32k;
    client_header_timeout 20;
    client_body_timeout 60;

    proxy_buffers              16 64k;
    proxy_buffer_size          64k;
    proxy_busy_buffers_size    128k;
    proxy_temp_file_write_size 128k;
    proxy_connect_timeout      3s;



Yichun Zhang (agentzh)

unread,
Jan 29, 2015, 3:33:29 PM1/29/15
to openresty
Hello!

2015-01-29 7:21 GMT-08:00 段立国:
> 请教一个问题,项目中使用nginx做http
> proxy,接收文件,透传给后端模块处理,上传大文件时,经常报499,查看日志是客户端主动断开连接。但是客户端是不会主动断开连接的,是不是nginx的buffer设置不合理导致了客户端一直上传不了数据,最终导致客户端断开连接,请大神们赐教。

如果是你的 buffer 设置不合理,则你应得到另外一个错误,而不是 499 错误,因为后者是客户端断开连接的错误。

即使客户不会主动断开连接,但它也经常会被动断开连接,比如网络超时或者用户直接关闭浏览器窗口或 app 窗口等等。

对于 nginx 配置,对你来说最重要的其实是 proxy_max_temp_file_size 这个配置指令:

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_max_temp_file_size

注意其默认值刚好是 1GB. 而你贴的配置片段里又唯独少了它 :)

Regards,
-agentzh

段立国

unread,
Jan 29, 2015, 9:24:38 PM1/29/15
to open...@googlegroups.com
谢谢章老师的回复,
       我的测试客户端是一个python脚本,超时时间是10s,如果我使用tengine的版本 设置proxy_request_buffering off之后就不会报499,如果用原生的nginx版本同样的设置80%的概率会报499,而且我发现上传时的文件没有写磁盘(缓存目录磁盘没有变化),理论上大于client_body_buffer_size不就是写盘了么?我用的nginx版本是1.4.7
       proxy_max_temp_file_size这个选项我看说明是缓存response的buffer大小呢,也和request有关么





>
>注意其默认值刚好是 1GB. 而你贴的配置片段里又唯独少了它 :)
>
>Regards,
>-agentzh
>
>-- 
>-- 
>邮件来自列表“openresty”,专用于技术讨论!
>订阅: 请发空白邮件到 openresty...@googlegroups.com
>发言: 请发邮件到 open...@googlegroups.com
>退订: 请发邮件至 openresty+...@googlegroups.com
>归档: http://groups.google.com/group/openresty
>官网: http://openresty.org/
>仓库: https://github.com/agentzh/ngx_openresty
>教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html


Reply all
Reply to author
Forward
0 new messages