微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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,并确保你记录访问/错误调试。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐