我把我的应用程序使用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
那么一个“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。
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] 举报,一经查实,本站将立刻删除。