CherryPy后面的Nginx反向代理POST请求被破坏截断

CherryPy后面的Nginx反向代理POST请求被破坏截断,第1张

概述CherryPy后面的Nginx反向代理POST请求破坏/截断

我把我的应用程序使用Cherrypy 3.1.2作为反向代理configuration在Nginx后面。 所有的GET请求都正常工作,但所有POST请求都返回http 400 – 格式错误的头文件。

我追溯到CherryPy Wsgi-Server源代码来查看请求处理代码,发现如果对于GET请求第一个请求行正确地读取,例如:

GET /home http/1.0

对于POST请求就像:

<http headers truncated at front> POST /home http/1.0

因此,对于POST请求,我们的应用程序从Nginx接收到包含GET / POST请求行和http头的正确请求:

windows上的反向代理

用于反向代理Nginx的authentication/访问控制模块

使用Nginx和Play 2.1应用程序反向代理子目录

Gitlab 5.3后面的Nginx反向代理

我可以将一些确切的远程URL映射到具有不同端口的本地URL

第一个http标题行从一些字节开始被截断

然后显示一个空白行,指示http标头的结尾

那么一个“POST / home http / 1.0”,这显然是作为请求的第一行预期。

编辑:这是请求的结束,所以也没有身体数据应该跟随http POST标题。

此外,从p.1截断的字节数似乎取决于表单上有多lesspOST数据,例如,我在/ home FORM字段中键入的字符越多,http标题中的字符就越多。

显然,Nginx在将头传递给上游服务器(我的应用程序)时会以某种方式破坏头文件。


但是:当我只是为了testing使Nginxredirect到一些外部网站(也使用POST请求) – 一切顺利。

所以我现在很困难。

我的configuration是:windows XP Prof,Python / 2.5.1,CherryPy / 3.1.2,Nginx / 0.8.32


浏览器:firefox 2.0,IE 7.0


我的应用程序(独立运行)通常在多种configuration下运行和testing。

我使用非常基本的Nginxconfiguration,如:

upstream backend { server localhost:8088 weight=1; } server { Listen 80; server_name localhost; location / { #proxy_read_timeout 300; proxy_pass http://backend; #proxy_redirect default; } }

尽pipe在网上发现了许多其他的proxy_pass的例子和configuration。

任何想法在哪里寻找问题? Nginxconfiguration,我的CherryPy应用程序或其他地方?

新:我发现,它的工作正常,但只有身体内容长度为零的POST请求(没有任何字段testing的空)。


并valIDation从开始截断的字节数等于Content-length +一些小的常量(可能是2)。

Nginx Proxy_Pass到CDN直接打CDN。 Pro's,Con's,速度慢还是对服务器有负面影响?

使用ajp协议连接到备用备用主机别名

对Heroku的Nginx反向代理失败了SSL握手

Nginx的代理传递和URL重写

gitlab后面的ngnix和https – >不安全或坏的网关

你可以尝试参数:

ignore_invalID_headers on; sendfile on;

在http块…也可能尝试禁用keepalives,并确保你记录访问/错误调试。

总结

以上是内存溢出为你收集整理的CherryPy后面的Nginx反向代理POST请求被破坏/截断全部内容,希望文章能够帮你解决CherryPy后面的Nginx反向代理POST请求被破坏/截断所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1268396.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存