当前位置:  开发笔记 > 后端 > 正文

Http POST删除URL中的端口

如何解决《HttpPOST删除URL中的端口》经验,为你挑选了3个好方法。

我有一个用Django构建的webapp.我目前正在路由器后面的笔记本电脑上运行它.

我将路由器配置为将发送到特定端口的所有流量路由到该笔记本电脑.

我有Nginx作为Apache的反向代理,使用mod_wsgi来运行Django.

我的问题是:当我尝试提交任何POST表单时,端口#将从URL中删除(例如209.245.23.201:1552/login/变为209.245.23.201/login/)

自然,这打破了.导致这种情况的原因(Nginx,Apache,Django?)以及如何解决?

提前致谢.

编辑:似乎表单提交,但我认为重定向失败.

编辑2:问题肯定是Nginx,或Nginx和Apache之间的交互.我尝试使用Apache作为唯一的服务器,运行django,它运行正常.所以要么Nginx正在放弃端口,要么以某种方式Apache被Nginx充当代理而感到困惑.无论如何



1> 小智..:

我的开发服务器遇到了同样的问题.在一些互联网搜索之后,我发现了这个讨论(nginx,apache和奇怪的管理员错误),其中解决方案是修改nginx的代理配置.

要修改的配置设置为:

proxy_set_header            Host $host;

解决方案是添加端口号:

proxy_set_header            Host $host:$server_port;

在我的ngnix + apache2(与工人mpm)+ django现在一切正常.


在我的情况下$ server_port没有被解析,我不得不手动放入我的server_port("$ host:8080").

2> blueyed..:

您希望传递到达nginx的原始HTTP主机标头:

proxy_set_header Host $http_host;

这似乎是Debian/Ubuntu中nginx的默认配置的一个错误,它只使用$host:$host不包含$server_port.(这是/etc/nginx/proxy_params针对Debian/Ubuntu软件包配置的,您可以在包含它之后在配置中覆盖它.)

请注意,$host:$server_port不同于$http_host.有关说明,请参见http://wiki.nginx.org/HttpCoreModule#.24host.

报告并在Debian中修复:http://bugs.debian.org/733016



3> Danny Thomas..:

鉴于你所关注的一切都是清晰的HTTP(例如AJP之类的东西),我会在主机上运行一个协议分析器,如Wireshark,并确定引入重定向的位置.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有