I’m trying to make a PUT/POST HTTP request to a uwsgi application through apache, using the uwsgi module for apache. These requests use chunked transfer encoding for the request body.
I have some test cases that I can run to make sure that all the functionality works. When I run them against the uwsgi HTTP socket (--http-socket 127.0.0.1:2001), everything works fine. When I run against port 80 (apache), apache seems to give me a ‘411 Length Required’. Uwsgi and my application do not report any request at all. I also snooped the backend traffic between apache and uwsgi, and I don’t see traffic.
My application’s other functions (ones that don’t use PUT/POST with chunked transfer encoding for the request body) work fine through apache.
Some investigation seems to indicate that the uwsgi module for apache is responsible for disallowing the requests using a chunked request body:
“Well, I got Apache source and it is obvious that the problem is
most (all?) mod_* things do not ask Apache to dechunk request for
them. They prefer to make it an error. So, it is possible to write Apache
module to allow chunked requests.”
My configuration is apache 2.2.15 (stock CentOS 6.0), proxying for uwsgi (my custom package 1.9.37), running my python wsgi application. My apache configuration:
ProxyPass /app/1.0 uwsgi://127.0.0.1:2101/
/usr/sbin/uwsgi --socket 127.0.0.1:2101 --http-socket 127.0.0.1:2001 -A 10 --wsgi-file /usr/local/vf/app/bin/app.wsgi --processes 10 --snmp=127.0.0.1:3001 --snmp-community XXXX --daemonize2 /var/log/uwsgi-app --log-syslog=app --pidfile /var/run/app.pid --http-manage-expect --http-raw-body --chunked-input-limit 1052672
I’m hoping that someone on the list can help me determine why I’m getting a 411 , and how I can fix it. I’d rather not drop using apache.