Назад | Перейти на главную страницу

Apache loadbalance нескольких DNS с настраиваемыми параметрами для ведомых серверов

Ну, у меня есть 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'] переменная для проверки, на какой виртуальный хост был отправлен запрос.