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

Как направлять запросы обратного прокси с использованием подстановочных знаков vhosts

Меня интересует запуск обратного прокси с 2-3 виртуальными машинами за ним. На каждом внутреннем сервере будет работать несколько виртуальных хостов, и вместо того, чтобы вручную настраивать каждый отдельный виртуальный хост на прокси (множество виртуальных хостов приходят и уходят слишком часто, чтобы это было практично), я хотел бы использовать что-то, что может использовать сопоставление шаблонов в последовательный порядок поиска подходящего внутреннего сервера. Например:

Server 1: *.dev.mysite.com
Server 2: *.stage.mysite.com
Server 3: *.mysite.com, dev.mysite.com, stage.mysite.com, mysite.com
Server 4: *

В приведенной выше конфигурации task.dev.mysite.com перейдет на Сервер 1, dev.mysite.com перейдет на Сервер 3, yoursite.stage.mysite.com на Сервер 2, www.mysite.com на Сервер 3 и yoursite.com на Сервер 4.

До сих пор я изучал использование Squid, Varnish и nginx. У меня есть свое мнение относительно их соответствующей желательности и общей пригодности, но не совсем очевидно, может ли какой-либо из них обрабатывать динамический выбор сервера таким образом и не требует конфигурации для каждого виртуального хоста. Apache, с другой стороны, может делать это легко и удобно, но в остальном (помимо того, что он хорошо известен и знаком), кажется, очень плохо подходит для задачи частичного обслуживания производительности.

На самом деле производительность еще не является серьезной проблемой, но кажется глупым использовать Apache, если другая система будет работать намного лучше и также может обрабатывать желаемую конфигурацию «без помощи рук». Но поэтому часто приходится настраивать шлюз для всех производственных сервисов и рисковать сбоями в масштабах всей сети ... а также настраивать себя на более длительные простои позже, если Apache станет слишком маленьким узким местом.

Какой из этих (или других) обратных прокси может сделать это лучше всего?


И, возможно, мне стоит опубликовать это как отдельный вопрос, но если Apache - единственный практический вариант, насколько безопасным / надежным / предсказуемым является apache-mpm-event в apache2.2 (Ubuntu 12.04.1), особенно для выделенного обратного прокси? Насколько я понимаю, Event MPM был объявлен "безопасным" начиная с версии 2.4, но неясно, имеет ли достижение стабильности в 2.4 какие-либо последствия для более старых (2.2) версий, доступных в официальных / стабильных каналах пакетов различных дистрибутивов.

Лично я использую Фунт. Я хотел бы вдаваться в подробности, но этот вопрос скоро будет закрыт, так как это вопрос покупок.

Я переделал большинство своих внешних серверов, чтобы они работали через несколько обратных прокси-серверов Pound, что позволило мне значительно снизить стоимость сертификата SSL и использование IP.

У меня они работают уже около 9 месяцев без единой проблемы, поэтому я могу поручиться за надежность.

Вы также можете выполнить сопоставление с подстановочными знаками в настройке точно так, как хотите:

 HeadRequire "Host: .*.dev.mysite.com*"
 HeadDeny    "Host: .*.stage.mysite.com.*"

Лак определенно может это сделать, если это то, чем вы хотите.

Вы определяете свои серверные части в своем файле vcl, а затем в vcl_recv вы можете использовать несколько таких регулярных выражений:

if (req.http.Host ~ "\.dev\.mysite\.com$") {
  set req.backend = server1;
elsif (req.http.Host ~ "\.stage\.mysite\.com$") { 
  set req.backend = server2;
elsif ...

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