Apache виртуальные хосты и обратный прокси

На вид бесконечный вопрос. Хорошие люди в SlashDot обсудили это только что. Выезд, что они должны были сказать:

  • Дисковое пространство не является проблемой с современными жесткими дисками, 16 ГБ все еще тривиальная сумма для современных дисков емкостью.
  • Однако значительная область подкачки может быть проблемой в случае плохого управления памятью:

Если я буду смотреть кино на 4 ГБ в течение 2 часов, то много диспетчеров памяти решит, что попытка кэшировать все те данные могла бы быть хорошей вещью. На полпути через фильм, это будет думать, что все те другие запускающие программы были не использованы в течение часа и могут быть безопасно выгружены в пользу кэширования большего количества того файла на 4 ГБ. Конечный результат состоит в том, что половина Ваших программ выгружается после просмотра кино, приводящего к вялой системе, которая повреждает на всем протяжении файла подкачки.

  • В конце правильное решение должно прийти из памяти требования, не приблизительные формулы:

Если у Вас есть [достаточно RAM для запущения программ, Вы хотите использовать ежедневно], то нет никакой причины когда-либо использовать подкачку.

5
задан 28 August 2009 в 01:31
2 ответа

можно действительно использовать mod_proxy модуль. Это хорошо работает с vhosts. В основном основной сервер получит все запросы, и когда определенный URL/домен назовут, mod_proxy перенаправит этот домен к другому серверу (сервер 2), он похож на это на сервере 1

<VirtualHost *>
ServerName server1.com
Hosted on the server
</VirtualHost *>

<VirtualHost *>
ServerName server2.com
// mod_proxy directives in order to redirect this domain name to the other server //
</VirtualHost>

И существует хорошее учебное руководство: http://www.apachetutor.org/admin/reverseproxies

4
ответ дан 3 December 2019 в 01:42

Я просто сталкиваюсь с той же проблемой, я исследовал два решения:

  1. Зеркально отразите внешнюю иерархию на внутреннем DNS (например, foo.example.com-> foo.internal.lan, bar.example.com-> bar.internal.lan, и т.д.); в каждом VirtualHost блок в frontend Вы добавляете соответствующее ProxyPass и ProxyPassReverse директивы. Если у Вас есть vhosts затем, можно создать вместилище (ServerAlias *.example.com) раздел в frontend и использовании mod_rewrite ([P]) проксировать запрос к бэкенду, отображая запросы на внутренние имена.

    Это первое приблизилось к этому, я попробовал: это хорошо работает, но требует изменений в именовании бэкенда. Если Вы не можете коснуться DNS или если сервер бэкэнда даже не имеет имени, чем Вы не можете использовать этот подход.

    О, не забывайте к fixup cookie с ProxyPassReverseCookieDomain, иначе Вы уставитесь на журналы, задающиеся вопросом, почему сессии больше не работают ;-)

  2. Используйте вместилище vhost в frontend и использовании ProxyPreserveHost on; в этом случае frontend сохраняет Хост: заголовок в запросе, таким образом, можно снова использовать исходную vhost конфигурацию в бэкенде (т.е. бэкенд видит запрос с внешним именем в Хосте заголовка: foo.example.com)

1
ответ дан 3 December 2019 в 01:42

Теги

Похожие вопросы