Ну, у меня есть LB с apache2, за ним есть проект (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) мой проект будет знать, что его идентификатор равен 10, а если он от (client2.com), будет 20.
И это вроде как работает, но мне сложно контролировать маршруты и пути (включая публичный / контент внутри проекта.
Любые советы / идеи? Спасибо
Ну, бывает, что мне просто нужно посмотреть мои заголовки, когда я получаю доступ через LB, есть изменение заголовков, которые идут с X-Forwarded-Server
которые указывают, откуда пришел DNS. В этом случае я использую метод getallheaders()
из PHP.
Вам нужно использовать PHP $_SERVER['SERVER_NAME']
переменная для проверки, на какой виртуальный хост был отправлен запрос.