我有一个遗留系统,我试图做一个重大的configuration更改,但没有看到一个办法干净这样做。
我inheritance的状态包括托pipe在两个应用程序服务器上的Web站点,这些应用程序服务器位于负载平衡器(每个服务器托pipe一个LAMP堆栈)之后。 域的Alogging(example.com)指向平衡器,就像“www”的CNAME条目一样。
现在,我想把这个网站移到我已经build立并准备好的另一个服务器上,通常很简单, 然而,我所面临的问题是,当前服务于该网站的服务器还在同一个“example.com”和“www.example.com”条目上服务于子目录的附加应用程序。
我想要的是如下:
www.example.com和example.com指向服务器A.
www.example.com/scripts …和example.com/scripts …指向当前的负载平衡器
这最简单的就是最初在子域中build立的服务,但事实并非如此,而且对于大量客户来说迁移将是相当痛苦的。
我找不到一个优雅的方式来做到这一点。 有没有人有什么build议?
更新:
为了说明,/ scripts / …目录中的产品是通过客户端构build的应用程序(它是一个接受查询string并返回XML的服务)通过SSL连接以编程方式访问的。 这是否对解决scheme有影响?
你能不能为主应用程序设置一个子域名? 就像www2.example.com(或完全删除子域,并只在example.com上),然后只是从站点根redirect到新的子域? 如果使用.htaccess进行redirect,则可以将除/ scripts之外的所有东西redirect到新服务器。
.htaccess文件看起来像这样:
重写引擎
RewriteCond $ 1!^脚本
RewriteRule(。*) http://www2.example.com/ $ 1 [R = 301,L]
上面的301代码指定redirect是永久的; search引擎会喜欢这个,如果你担心失去排名。 此外,此代码应将用户redirect到新url上的等同页面,以便旧url上的书签和其他指向其他网页的链接仍然有效。 (虽然首先testing)
是的 – 有点泡菜。 对于长期的解决scheme,您应该努力将其他应用程序移到自己的网站。 对于临时解决方法,您可以在负载平衡器或原始LAMP服务器上使用redirect到新站点,直到您可以更改wwwlogging。
在NewServer上设置反向代理,这将使对某个URL / URI的所有请求都被转发到您的OldServer。
显然,你必须为旧的服务器设置一个单独的域,但是这个维护URL。
http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
<Location /legacy-app/> ProxyPass http://oldserver.example.com/legacy-app/ SetEnv force-proxy-request-1.0 1 SetEnv proxy-nokeepalive 1 </Location>