NGINX + uWSGI Connection Reset by Peer
bottle, nginx, uwsgi
Solution
make sure to consume your post data in your application
for example if you have a Django/python application
def my_view(request):
# ensure to read the post data, even if you don't need it
# without this you get a: failed (104: Connection reset by peer)
data = request.DATA
return HttpResponse("Hello World")
Some details: https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
Problem
I'm trying to host Bottle Application on NGINX using uWSGI. Here's my nginx.conf ``` location /myapp/ { include uwsgi_params; uwsgi_param X-Real-IP $remote_addr; uwsgi_param Host $http_host; uwsgi_param UWSGI_SCRIPT myapp; uwsgi_pass 127.0.0.1:8080; } ``` I'm running uwsgi as this ``` uwsgi --enable-threads --socket :8080 --plugin python -- wsgi-file ./myApp/myapp.py ``` I'm using POST Request. For that using dev Http Client. Which goes infinite when I send the request ``` http://localhost/myapp ``` uWSGI server receives the request and prints ``` [pid: 4683|app: 0|req: 1/1] 127.0.0.1 () {50 vars in 806 bytes} [Thu Oct 25 12:29:36 2012] POST /myapp => generated 737 bytes in 11 msecs (HTTP/1.1 404) 2 headers in 87 bytes (1 switches on core 0) ``` but in nginx error log ``` 2012/10/25 12:20:16 [error] 4364#0: *11 readv() failed (104: Connection reset by peer) while reading upstream, client: 127.0.0.1, server: localhost, request: "POST /myApp/myapp/ HTTP/1.1", upstream: "uwsgi://127.0.0.1:8080", host: "localhost" ``` What to do?