昨天快下班的时候,有位同事遇到post数据接收不到的问题
首先网络架构是:
nginx1
| rewrite
nginx2
| pass
resin1
nginx1是在192.168.1.1上
nginx2跟resin1是在192.168.1.2上
首先访问nginx1,由nginx1 rewrite到nginx2,nginx2直接pass到resin1,整个过程是POST形式。至于
为什么要用两层nginx,这当然是有原因的了:-)
于是乎,快速制定了几个测试案例:
1,两种访问方式:GET,POST
GET URL带参数,没有问题。
POST 有问题。
让网络同事检查,处理这个location并没有做什么特殊的POST处理。——!
2,访问nginx1时,直接pass到resin1,跳过nginx2
问题依旧。
3,去掉nginx1,访问nginx2,直接pass到resin1
有数据的。
4,直接访问resin1
是有数据的。
到这里,我感到很奇怪,为啥,为啥nginx1传递不了post数据呀,而nginx2可以,问题肯定出现在nginx1的配置上!~经过一番斗争后,终于找到问题关键
:
nginx1中,配置了一个全的post处理
if($request_method = POST) {
rewrite .* /post.php last;
}
最后,只能大眼望细眼,汗一滴。