使用分块编码上传时,使用Haproxy + Nging接收411错误

时间:2016-06-22 21:17:02

标签: django nginx http-headers http-error chunked-encoding

这是我的服务器架构:

端口443 - > haproxy 1.6.3 - > nginx 1.1.19 - > uwsgi 2.0.13.1 - > wsgi python服务器(Django)

我知道使用haproxy + nginx很奇怪,但我别无选择,因为我需要haproxy用于端口443上同一服务器上的另一个项目。

这是我的haproxy配置:

frontend www-https
   bind *:443 ssl crt /etc/ssl/private/
   mode     http
   option   httpclose
   acl nginx hdr_end(host) -i example.com

backend nginx
    mode                http
    balance             leastconn
    option              forwardfor
    option              http-server-close
    option              forceclose
    no option           httpclose
    server nginx-01 nginx:52654 check

这是我的nginx配置

server {
    listen      52654 default_server;
    charset     utf-8;
    client_max_body_size 75M;
    chunked_transfer_encoding on;
    location / {
        uwsgi_pass  django;
        proxy_buffering off;
        uwsgi_param  QUERY_STRING       $query_string;
        uwsgi_param  REQUEST_METHOD     $request_method;
        uwsgi_param  CONTENT_TYPE       $content_type;
        uwsgi_param  CONTENT_LENGTH     $content_length;

        uwsgi_param  REQUEST_URI        $request_uri;
        uwsgi_param  PATH_INFO          $document_uri;
        uwsgi_param  DOCUMENT_ROOT      $document_root;
        uwsgi_param  SERVER_PROTOCOL    $server_protocol;
        uwsgi_param  HTTPS              $https if_not_empty;

        uwsgi_param  REMOTE_ADDR        $remote_addr;
        uwsgi_param  REMOTE_PORT        $remote_port;
        uwsgi_param  SERVER_PORT        $server_port;
        uwsgi_param  SERVER_NAME        $server_name;
    }
}

我遇到的问题是,当我使用分块编码上传wuth一个Web客户端时,我得到411 HTTP错误内容长度需要。

如果我绕过haproxy,它的工作正常。但是使用haproxy + nginx会给出chunked编码的411错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你的nginx版本已经很老了。尝试升级它。