是否可以将子目录重定向到另一台服务器,同时保留域名

是否可以将子目录重定向到另一台服务器,同时保留域名

我们在域名下有一个正常运行的网站x.domain.tld。我们想以现有方式向其添加 wordpress,x.domain.tld/blog但将其安装在另一台服务器上,这样我们就不会触及这个旧(但正常运行)服务器上的任何东西。

那么我可以启动一个新服务器,在其上安装 wordpress,在 x.domain.tld/blog 上进行 apache 重定向以重定向到新服务器 IP,同时将域名保留在客户端的 url 中吗?

我觉得这不可行。我们不愿意将整个旧应用程序迁移到新服务器。还有其他方法吗?

感谢您的帮助

答案1

这是完全有效的案例反向代理。我链接到 Nginx 网站进行解释,因为 Nginx 非常擅长反向代理,但 Apache 和mod_proxymod_proxy_http能完美运行。

这里有很多关于这个主题的问题,并且有高质量的答案;@HermanB 链接了其中一个,但我建议你也搜索其他问题。

基本上,只需在 VirtualHost 中执行以下操作即可完成此任务:

<VirtualHost *:80>
   ServerName x.domain.tld
   ...
   ProxyPass /blog/  http://blog.domain.tld/blog/
   ProxyPassReverse /blog/  http://blog.domain.tld/blog/
</VirtualHost>

此类配置可应用于“主站点”之外,即,不在/blog/URI 下的所有内容都将像以前一样提供服务,就好像没有代理指令一样。

从配置片段中可以明显看出,博客本身必须安装到 Web 服务器上,blog.domain.tld以便在路径下可用blog。我强烈推荐这种方法,它不能重新定基(即/blog/必须在两个服务器上使用相同的 URI 基);这样你就可以轻松规避一些难以解决的问题,这些问题源于反向代理通常不会重写代理数据中的 URL。并确保你的应用程序(Wordpress)仅使用相对的URI。

答案2

我和你的想法一样。

URL 的主机部分由客户端决定。
如果 URL 的主机部分相同(x.domain.tldx.domain.tld),则客户端将始终连接到相同的 IP 地址。
这意味着如果应用程序之间共享主机部分,则它们应该由相同的主机和/或 IP 地址提供服务(正如 @HermanB 所评论的那样,这mod_proxy是一种技术,即第一台主机从客户端接收请求并从其他主机获取内容,然后将内容组合起来,就像在第一个主机上一样。这样,客户端就会始终连接到第一个主机。)。

相比之下,我们可以使用 让单个主机为多个 URL 主机和/或 IP 地址(参见X.domain.tldY.domain.tld由单个主机提供)提供服务VirtualHost

相关内容