nginx或dns url基于路径重写或屏蔽

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx或dns url基于路径重写或屏蔽相关的知识,希望对你有一定的参考价值。

我在一个网站上工作,这是一个旅游博客,还有子标签mytravelsite.com/tickets,这是白色标签,mytravelsite.com/tickets/fares和其他页面下的所有内容都指向另一个IP,这很好。

但现在我想切换,现在主要网站是mytravelsite.com,这将是来自mytravelsite.com/tickets的whitelabel,但没有/tickets在网址但仍然保持我的博客所以另一个麻烦是whitelabel没有robots.txt所以这我将不得不服务于我的托管。

所以最后我主持10.1.1.1 ip和whitelabel解析为10.10.10.10 ip

我需要的是:

所有在mytravelsite.com/blog下解决我的托管和我的托管网站10.1.1.1以及mytravelsite.com/robots.txtmytravelsite.com/sitemap.xml解决我在10.1.1.1的托管

以及在10.10.10.10解决whitelabel的其他一切

我猜这可以通过一些dns设置或nginx代理或重写规则来完成,但我在互联网上搜索过去2天的所有内容都以失败告终。

答案

DNS仅考虑名称,即斜杠之前的部分。你总是mytravelsite.com,所以这不能完全在DNS中完成。

我知道这不是一个真实/完整的答案。

另一答案

我会尝试使用代理解决它。

包含的片段不是nginx的配置,而是apache的配置,因为我现在没有类似的nginx设置。但我相信它可能是有用的起点。

<VirtualHost 10.10.10.10:80>
    ServerName mytravelsite.com

    ProxyPreserveHost On
    ProxyPass /blog/ http://10.1.1.1/ retry=1 timeout=600 keepalive=On
    ProxyPassReverse /blog/ http://10.1.1.1/

    ProxyPass /robots.txt http://10.1.1.1/ retry=1 timeout=600 keepalive=On
    ProxyPassReverse /robots.txt http://10.1.1.1/

    ProxyPass /sitemap.xml http://10.1.1.1/ retry=1 timeout=600 keepalive=On
    ProxyPassReverse /sitemap.xml http://10.1.1.1/
</VirtualHost>

笔记:

  • 10.*.*.*是一个仅限本地的网络,因此virtualhost标头中的10.10.10.10仅用于说明应该放置哪个服务器。
  • 它也不会开箱即用 - 只需从这里开始并迭代到最终解决方案
  • 您尚未定义如何识别“您的托管网站”,因此示例中缺少它

以上是关于nginx或dns url基于路径重写或屏蔽的主要内容,如果未能解决你的问题,请参考以下文章

怎么在windows 下nginx路径重写

nginx配置url重写

怎么把url的aspx后缀去掉,用URL重写还是啥生成的,具体操作讲下,或具体代码

[转] Nginx URL重写(rewrite)配置及信息详解

Nginx 代理或重写取决于用户代理

Nginx RegEx 对多个站点进行重写或内部重定向循环