我把我的应用程序使用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请求被破坏/截断所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)