最近碰到个问题,发现post的数据会丢失,配置如下:
{
servername bar.com
``location /abc {
``rewrite ^ http://foo.com/abc;
}
}
goole了一下,发现很多人都碰到过这个问题。
原因如下:
(1)POST的时候,参数是存放在message body中传递的,对于内部的url调转,因为是相同的一次请求,所以message body(request body)没变,所以POST数据不会丢失。
(2)而对于外部跳转,实际上是一次302,即用户再GET请求了一次,所以第二次就不会带第一次POST的数据了。
解决方法:
使用proxy_pass 。因为proxy之前的url和proxy的url不同,需要做location,并需要在在proxy_pass中写全路径。
参考例子如下:
{
servername bar.com
``location /abc {
``proxy_pass http://<span style="text-decoration: underline;">foo.com/abc</span>;
}
}