昨天快下班的時候,有位同事遇到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;
}
最后,只能大眼望細眼,汗一滴。