HTTP-запросы прокси с использованием субдомена - PullRequest
0 голосов
/ 24 августа 2011

Я пытаюсь сделать следующее:

  1. HTTP-запрос приходит на адрес subdomain.domain.com к общему IP-адресу на машине с прокси-сервером (может быть, apache? Что-нибудь лучше?)
  2. Исходя из субдомена, я бы хотел, чтобы запрос был перенаправлен на внутреннюю машину с частным IP-адресом и конкретным портом.Ответ на этот запрос будет приходить с этого внутреннего компьютера.

Какие у меня варианты?Какие-нибудь общие рекомендации для достижения этого?Каков хороший вариант реализации прокси?Также потребуется динамическое добавление поддоменов с течением времени, которые перенаправляют на определенные внутренние ips / порты.

Как сертификаты ssl работают в настройке с поддоменами?Требуется ли отдельный сертификат для каждого субдомена?

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Настройка не слишком сложна.Вы просто создаете виртуальный хост для каждого субдомена и настраиваете vhosts как прокси.Подход один и тот же, независимо от того, какое прокси-программное обеспечение вы выбираете.Я рекомендую вам использовать Nginx в качестве обратного прокси, так как конфигурация проще, а производительность намного лучше, чем у Apache.Если вы все еще хотите использовать Apache, убедитесь, что вы не запускаете PHP на прокси-машине и используете mpm_worker вместо mpm_prefork.

Вы можете создать скрипт, который добавляет новые субдомены в файл конфигурации.Это не должно быть слишком сложно, так как они будут выглядеть почти одинаково, за исключением пути к сертификату SSL и IP-адреса магистрального сервера.

Для SSL вы можете использовать подстановочный сертификат, который будет охватывать весьдомен, включая субдомены.Это поддерживается не на всех платформах, но поддержка выросла в последние годы, поэтому она должна быть довольно безопасной.

В противном случае, без подстановочного сертификата, вам потребуется сертификат и отдельный IP-адрес для каждого поддомену (поскольку SSL-соединение устанавливается до того, как известно имя домена, вам нужно будет различать разные сертификаты по разным IP-адресам.)

1 голос
/ 24 августа 2011

Apache вполне подходит для этой проблемы. Вы можете использовать виртуальные хосты, которые используют mod_proxy :

<VirtualHost *:80>
    ServerAdmin xxx@yyy.com
    ServerName foo.yyy.com

    ProxyRequests Off
        <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyErrorOverride On                       
    ProxyPass / http://192.168.1.1/
    ProxyPassReverse / http://192.168.1.1/
    <Location />
        Order allow,deny
        Allow from all
        </Location>

</VirtualHost>

Если вы хотите разместить сотни или тысячи поддоменов, вы можете сделать это с помощью mod_rewrite , используя хитрость, включающую поиск по локальным именам, которая позволяет вам прокси bar.yyy.com что-то вроде local.bar.yyy.com. Использование mod_rewrite для массового виртуального хостинга упомянуто в документации Apache , использование его для прокси вместо простого перезаписи является относительно простым. Это дает преимущество в том, что новые субдомены могут добавляться исключительно с использованием DNS.

С точки зрения SSL, если вы просто используете *.yyy.com в качестве поддоменов, вы можете использовать подстановочный сертификат (я не рекомендую и не одобряю thwate, у них просто есть разумное описание этого). В общем случае хостинг нескольких сайтов SSL за одним публичным IP-адресом немного сложнее .

...