从现有域重定向到新域(Apache / haproxy)

时间:2016-09-21 17:41:46

标签: apache .htaccess haproxy

描述: 我们有两个apache服务器,一个是haproxy。我们的新服务器位于haproxy盒子后面,OLD位于不同的网络上。我将创建一个apache重写规则,将此oldsite.com/some/thing指向新的haproxy框(如下所示)。这将重定向到newsite / some / other thing。

问题: 是否可以使用户透明?我希望用户只能看到oldsite.com/some/thing而不是newsite / some / other / thing?这可以通过haproxy实现吗?我对haproxy有点了解但不是很多。在此先感谢您的时间。非常感谢。

enter image description here

2 个答案:

答案 0 :(得分:0)

根据@Panama Jack的提示,我创建了一个基本测试,我认为这对我有用。这只是粗略的配置,需要保护等等才能完全运行。这是apache 2.4(亚马逊AMI)。如您所见,我想让第二个服务器对用户透明。

此示例(快速和脏)设置执行以下操作:

  • login.HOST.info = login.DESTINATION.info
  • (用户永远不会看到实际存在该页面的login.DESTINATION.info网址)

服务器处理请求:

<VirtualHost *:80>
    ServerAdmin admin@localhost
    ServerName login.HOST.info
    ServerAlias www.login.HOST.info
    ErrorLog logs/login-error_log
    CustomLog logs/login-access_log common
    RewriteEngine On
    RequestHeader add X-SSL off
    RewriteRule ^/(.*) http://login.DESTINATION.info/$1 [P,L]
</VirtualHost>

最终服务器处理请求:

<VirtualHost *:80>
    ServerName login.DESTINATION.info
    ServerAdmin webmaster@site.com
    DocumentRoot /var/www/deal/site/locator/whatever/

    RemoteIPHeader X-Forwarder-For    # allows the host to remain
    RemoteIPInternalProxy XXXX.0.0.0/8   # ip of other machine
</VirtualHost>

答案 1 :(得分:0)

请参阅我的第一个答案,但另一种方法是使用一个虚拟主机并使用代理:

ha proxy

 acl loc_req url_beg -i /uri/locator/location

(使用!loc_req等添加阻止到旧服务器的行。)

新系统上的vhost

<VirtualHost *:80>
   ServerAdmin admin@localhost
   ServerName login.HOST.info 
   ... ....
   Alias /uri/locator/location /www/actual/path/to/new/location
   ... .....