2

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

我已经用域名代替了客户的隐私。但是,它们位于 test.com 的 Linode 上,该 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;
     }
}
4

2 回答 2

4

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

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

server_name test.com;
location / {
    proxy_pass http://other.com;
}
于 2012-11-12T21:43:31.530 回答
0

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

rewrite ^ http://other.com/sub redirect;
于 2012-11-10T23:36:53.043 回答