用proxy_redirect解决proxy后重定向url问题
今天配置Nginx时,遇到了“/”的问题
前端的Nginx负责把http://mtpc.sohu.com/yum/Server/开头的url反向代理到后端的http://192.168.1.1/Server/上
对于有完整的路径,如http://mtpc.sohu.com/yum/Server/的代理没有问题,Server对应后台服务器的一个目录
但当访问http://mtpc.sohu.com/yum/Server时,后端Nginx会发送一个301到/上,于是返回到前端后URL变成了
http://mtpc.sohu.com/Server/,这个url显然不是我们想要的
在Apache中有个ProxyPassReverse的参数,用来调整反向代理服务器发送的http应答头的url,可以解决这个问题
查了Nginx的手册后,终于发现了proxy_redirect这个参数,它实现的功能和ProxyPassReverse类似
增加如下配置:
location ^~ /yum
{
proxy_pass http://192.168.1.1/;
proxy_redirect http://mtpc.sohu.com/ /yum/;
}
这样,当访问http://mtpc.sohu.com/yum/Server后,就会301到http://mtpc.sohu.com/yum/Server/
"这样,当访问http://mtpc.sohu.com/yum/Server后,就会301到http://mtpc.sohu.com/yum/Server/"
这怎么解释啊,这两个url不是一样的么,楼主是想说:当访问http://mtpc.sohu.com/yum/Server后,就会301到http://192.168.1.1/yum/Server/ 么?
这两个URI实际是不一样的