Apache 使用自定义参数对多个 DNS 进行负载平衡,以将服务器分配到从属服务器

Apache 使用自定义参数对多个 DNS 进行负载平衡,以将服务器分配到从属服务器

好吧,我已经用 apache2 设置了一个 LB,它背后有一个项目(ZF2 PHP),那是一个电子商务。

我打算让客户端拥有多个 DNS,并将它们全部指向我的 LB,然后分派这些请求,但我的问题是,在 LB 和从属服务器之间,有没有办法让我识别该请求来自哪个 DNS?

今天我有这个

<VirtualHost *:80>
    ServerName client1.com
    ServerAlias www.client1.com

    ProxyRequests Off
    <Proxy \*>
        Order deny,allow
        Deny from all
    </Proxy>

    <Proxy balancer://clusterA>
    BalancerMember http://http1.mysubdomain.com/10
    BalancerMember http://http2.mysubdomain.com/10
    Order allow,deny
    Allow from all
    </Proxy>
    ProxyPass / balancer://clusterA/
</VirtualHost>

<VirtualHost *:80>
    ServerName client2.com
    ServerAlias www.client2.com

    ProxyRequests Off
    <Proxy \*>
        Order deny,allow
        Deny from all
    </Proxy>

    <Proxy balancer://clusterB>
    BalancerMember http://http1.mysubdomain.com/20
    BalancerMember http://http2.mysubdomain.com/20
    Order allow,deny
    Allow from all
    </Proxy>
    ProxyPass / balancer://clusterB/
</VirtualHost>

这样,如果从客户端1(client1.com)访问网站,我的项目就会知道他的ID是10,如果从(client2.com)访问则是20。

这有点用,但我很难控制路线和路径(包括项目内的“public /”内容)。

有什么建议或想法吗?谢谢

答案1

您需要使用 PHP 的$_SERVER['SERVER_NAME']变量来检查请求被发送到哪个虚拟主机。

答案2

好吧,我只需要查看我的标头,当我通过 LB 访问时,标头会发生更改,并X-Forwarded-Server指示 DNS 来自哪个。在这种情况下,我使用getallheaders()PHP 中的方法。

相关内容