nginx重定向掩码

时间:2012-11-10 19:52:23

标签: redirect nginx

我是nginx的新手,我正试图找出重定向的问题。我正在尝试将网站从运行Web应用程序的主机重定向到另一个域。那部分我已经完成但我想掩盖它。当它重定向时,我不希望用户知道他们已经去了另一个域。

我已将域名替换为我的客户隐私。但是,他们正在test.com上的Linode上运行一个位于sub.test.com的Web应用程序。我想要的是访问test.com的任何用户被重定向到在other.com上托管的临时站点,但不会暴露域。

以前,有人告诉我该怎么做但是很久以前我不再有参考资料了。有人可以帮我吗?我不想暴露测试环境的域。

server {
     listen       80;
     server_name  www.test.com test.com www.test.net test.net;

     rewrite      ^ http://other.com/sub redirect;

     location / {
         root     /srv/http/www.test.com;
         index    index.html;
     }
}

2 个答案:

答案 0 :(得分:3)

你不能用重定向来做到这一点,因为重定向实际上就像告诉浏览器从哪里获取页面,所以你不能模糊真实的位置。 我想你需要的是代理,例如客户端从您的服务器(test.com)请求一些文档,然后您的服务器从其他服务器(other.com)获取文档并将该文档返回给客户端,就好像它是在test.com上生成的那样 - 这种情况下客户将无法确定文件的实际来源。

这可以通过以下方式完成:

server_name test.com;
location / {
    proxy_pass http://other.com;
}

答案 1 :(得分:0)

如果您希望重定向不更改用户可见的域名,则需要通过更改重写将其从301更改为302:

rewrite ^ http://other.com/sub redirect;