我们在域名下有一个正常运行的网站x.domain.tld
。我们想以现有方式向其添加 wordpress,x.domain.tld/blog
但将其安装在另一台服务器上,这样我们就不会触及这个旧(但正常运行)服务器上的任何东西。
那么我可以启动一个新服务器,在其上安装 wordpress,在 x.domain.tld/blog 上进行 apache 重定向以重定向到新服务器 IP,同时将域名保留在客户端的 url 中吗?
我觉得这不可行。我们不愿意将整个旧应用程序迁移到新服务器。还有其他方法吗?
感谢您的帮助
答案1
这是完全有效的案例反向代理。我链接到 Nginx 网站进行解释,因为 Nginx 非常擅长反向代理,但 Apache 和mod_proxy
也mod_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.tld
和x.domain.tld
),则客户端将始终连接到相同的 IP 地址。
这意味着如果应用程序之间共享主机部分,则它们应该由相同的主机和/或 IP 地址提供服务(正如 @HermanB 所评论的那样,这mod_proxy
是一种技术,即第一台主机从客户端接收请求并从其他主机获取内容,然后将内容组合起来,就像在第一个主机上一样。这样,客户端就会始终连接到第一个主机。)。
相比之下,我们可以使用 让单个主机为多个 URL 主机和/或 IP 地址(参见X.domain.tld
和Y.domain.tld
由单个主机提供)提供服务VirtualHost
。