Python Nginx反向代理POST请求背后的CherryPy已损坏/截断

Python Nginx反向代理POST请求背后的CherryPy已损坏/截断,python,nginx,cherrypy,reverse-proxy,Python,Nginx,Cherrypy,Reverse Proxy,我已经将使用Cherrypy 3.1.2的应用程序放在配置为反向代理的Nginx后面。 所有GET请求都正常工作,但所有POST请求都返回HTTP 400-格式错误的头 我追踪CherryPy WSGI服务器源代码以查看请求处理代码,并发现如果GET请求的第一行正确读取,例如: GET /home HTTP/1.0 对于POST请求,它类似于: <HTTP headers truncated at front> POST /home HTTP/1.0 虽然尝试了许多其他的例子和

我已经将使用Cherrypy 3.1.2的应用程序放在配置为反向代理的Nginx后面。 所有GET请求都正常工作,但所有POST请求都返回HTTP 400-格式错误的头

我追踪CherryPy WSGI服务器源代码以查看请求处理代码,并发现如果GET请求的第一行正确读取,例如:

GET /home HTTP/1.0
对于POST请求,它类似于:

<HTTP headers truncated at front>

POST /home HTTP/1.0
虽然尝试了许多其他的例子和配置的代理_通过发现在网上

有没有办法找到问题的地方?Nginx配置、我的CherryPy应用程序还是其他

新建:我发现,它可以正常工作,但仅适用于正文内容长度为零的POST请求(设置为空,没有任何字段进行测试)。

并验证从Beginning截断的字节数等于内容长度+一些小常量数(可能为2)。

您可以尝试以下参数:

ignore_invalid_headers   on;
sendfile                 on;

在http块中。。。还可以尝试禁用keepalives,并确保记录访问/错误以进行调试。

即使是单个请求也会发生这种情况吗?如果为请求正文读取了错误的字节数,则在多个请求上保持有效性可能会出现问题,如果在Windows上使用文本模式IO而不是二进制(将CRLF序列更改为LF,抛出
内容长度
字节计数),则可能会发生这种情况。是,即使这是重新启动应用程序并重新加载Nginx后的第一个请求,也会发生这种情况。
ignore_invalid_headers   on;
sendfile                 on;