【问题标题】:nginx redirect masknginx重定向掩码
【发布时间】:2012-11-13 05:43:31
【问题描述】:

我是 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;
     }
}

【问题讨论】:

  • 欢迎来到 Stack Overflow!请注意,标签不是关键字。在标签列表中塞满与您帖子中相同的词无助于对其进行分类。标签也是独立的,这意味着结合webserver 并不意味着您在谈论Web 服务器。请务必谨慎选择标签。

标签: redirect nginx


【解决方案1】:

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

这可以通过:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 它给了我一个错误,说有太多的重定向请求。有什么想法吗?
    • 您遇到的确切错误是什么?听起来您最终会陷入某种重定向循环,但因为您正在重定向到其他令人费解的服务器。
    • 顺便说一句,因为您正在重写所有内容(^ 正则表达式匹配所有内容)到另一台服务器,您可以完全省略 location /-block,这是不必要的
    • 这很奇怪,因为在 Chrome 中它重定向很好但没有屏蔽但在 Safari 中我得到“尝试打开“www.test.com/”时发生了太多重定向;如果你打开一个页面可能会发生这种情况被重定向以打开另一个页面,然后被重定向以打开原始页面。
    • 您的 other.com 配置中是否有任何重定向?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2014-04-11
    • 1970-01-01
    相关资源
    最近更新 更多