一尘不染

Nginx连接重置,来自uWsgi的响应丢失

django

我有一个通过Nginx和uWsgi托管的django应用。在某个非常简单的请求中,我得到了GET和POST不同的行为,事实并非如此。

uWsgi守护程序日志:

[pid: 32454|app: 0|req: 5/17] 127.0.0.1 () {36 vars in 636 bytes} [Tue Oct 19 11:18:36 2010] POST /buy/76d4f520ae82e1dfd35564aed64a885b/a_2/10/ => generated 80 bytes in 3 msecs (HTTP/1.0 440) 1 headers in 76 bytes (0 async switches on async core 0)
[pid: 32455|app: 0|req: 5/18] 127.0.0.1 () {32 vars in 521 bytes} [Tue Oct 19 11:18:50 2010] GET /buy/76d4f520ae82e1dfd35564aed64a885b/a_2/10/ => generated 80 bytes in 3 msecs (HTTP/1.0 440) 1 headers in 76 bytes (0 async switches on async core 0)

Nginx访问日志:

127.0.0.1 - - [19/Oct/2010:18:18:36 +0200] "POST /buy/76d4f520ae82e1dfd35564aed64a885b/a_2/10/ HTTP/1.0" 440 0 "-" "curl/7.19.5 (i486-pc-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15"
127.0.0.1 - - [19/Oct/2010:18:18:50 +0200] "GET /buy/76d4f520ae82e1dfd35564aed64a885b/a_2/10/ HTTP/1.0" 440 80 "-" "curl/7.19.5 (i486-pc-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15"

Nginx错误日志:

2010/10/19 18:18:36 [error] 4615#0: *5 readv() failed (104: Connection reset by peer) while reading upstream, client: 127.0.0.1, server: localhost, request: "POST /buy/76d4f520ae82e1dfd35564aed64a885b/a_2/10/ HTTP/1.0", upstream: "uwsgi://unix:sock/uwsgi.sock:", host: "localhost:9201"

本质上,如果我使用POST,Nginx会丢失响应,如果使用GET则不会。

有人知道吗?


阅读 662

收藏
2020-03-31

共2个答案

一尘不染

经过进一步研究的幸运发现(http://answerpot.com/showthread.php?577619-Several%20Bugs/Page2),我发现了一些有帮助的…

uwsgi_pass_request_body off;在Nginx conf中提供参数可以解决此问题…

2020-03-31
一尘不染

传递–post-buffering 1给uwsgi

这将自动缓冲所有http正文> 1个字节

nginx管理上游断开连接的方式引起了问题

2020-03-31