使用分块编码上传时使用 Haproxy + Nging 收到 411 错误
Receiving 411 errors with Haproxy + Nging when uploading with 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;
}
}
我遇到的问题是,当我使用分块编码通过 Web 客户端上传时,我收到 411 HTTP 错误,需要内容长度。
如果我绕过 haproxy,它工作正常。但是使用 haproxy + nginx 给我分块编码的 411 错误。
有什么想法吗?
你的nginx版本太旧了。尝试升级它。
这是我的服务器架构:
端口 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;
}
}
我遇到的问题是,当我使用分块编码通过 Web 客户端上传时,我收到 411 HTTP 错误,需要内容长度。
如果我绕过 haproxy,它工作正常。但是使用 haproxy + nginx 给我分块编码的 411 错误。
有什么想法吗?
你的nginx版本太旧了。尝试升级它。