hellodizhu 发表于 2014-11-03 10:35

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呢?

lu_uye 发表于 2015-08-02 15:32

给点自己的意见
你要改的referer 是采用proxy_set_header的形式,也就是说只在发生proxy_pass的时候有效。而你一旦proxy_pass 浏览器就不会跳转了。 建议你google 修改头部的跳转方法
页: [1]
查看完整版本: Nginx 疑惑 Rewrite 和 Redirect 的区别