好吧,我已经用 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 中的方法。