nginx中post数据莫名奇妙丢失的问题的解决方法

发布时间:2020-12-03编辑:脚本学堂
nginx中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;
}