Nginx 疑惑 Rewrite 和 Redirect 的区别
有一个需求是这样的:1、访问www.a.com的时候跳转到www.b.com中去;
2、能够定制header中的referer,也就是从www.a.com跳转到www.b.com,在www.b.com中识别到的referer就是我们定制的referer
配置一
server
{
listen 80;
server_name www.a.com;
location / {
proxy_set_header referer 'my referer';
proxy_pass http://www.b.com;
proxy_redirect http://www.a.com/ http://www.b.com/;
#rewrite ^/ http://www.b.com;
}
}
上面这个配置,虽然可以成功定制修改referer的值,但是浏览器地址栏还是www.a.com,URL没有成www.b.com的;
然后修改成下面这个配置:
配置二
server
{
listen 80;
server_name www.a.com;
location / {
proxy_set_header referer 'my referer';
#proxy_pass http://www.b.com;
#proxy_redirect http://www.a.com/ http://www.b.com/;
rewrite ^/ http://www.b.com;
}
}
这个可以实现跳转,浏览器地址栏成功变成:www.b.com,但是referer的值没有变成my referer
在Nginx中怎样配置,才能实现既能跳转又能修改referer呢? 给点自己的意见
你要改的referer 是采用proxy_set_header的形式,也就是说只在发生proxy_pass的时候有效。而你一旦proxy_pass 浏览器就不会跳转了。 建议你google 修改头部的跳转方法
页:
[1]