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

Зачем использовать Apache перед другим веб-сервером?

Я видел множество настроек веб-сервера, в которых Apache находится перед другим веб-сервером. Наиболее яркими примерами из них являются веб-серверы Java, например Glassfish, Tomcat и т. Д. Какой в ​​этом смысл? Я понимаю, что смысл размещения Apache перед, скажем, кластером Mongrel - это балансировка нагрузки, но как насчет других серверов? Каковы причины для этого?

Серверы веб-приложений хороши для размещения своих приложений (Ruby, Java и т. Д.), Но не так хороши, как Apache для размещения статических файлов или обеспечения балансировки нагрузки / аварийного переключения (mod_proxy), безопасность / фильтрация (mod_security), переписывая (mod_rewrite) и т.д. Поэтому довольно часто Apache используется в качестве внешнего интерфейса, возможно, обслуживая весь статический контент, а затем проксируя запросы на сервер приложений (mongrel, tomcat и т.д.).

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

Что касается вашего другого вопроса -

Тогда еще один вопрос: если бы я сделал это, скажем, с сервером Java за Apache, использовал бы я несколько экземпляров?

Зависит :) Какая нагрузка? На что похоже использование памяти? Как бы вы их распределяли - несколько серверов приложений Java на одном устройстве? Разные коробки? Подходящая конфигурация зависит от того, какую проблему вы пытаетесь решить.