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


хорошо ли использовать веб-сервер Apache перед GF или Tomcat? Это улучшает производительность / безопасность?

или нет никаких причин использовать веб-сервер Apache с GF?

5 52

5 ответов:

взято из http://wiki.apache.org/tomcat/FAQ/Connectors#Q3

  • кластеризации. Используя Apache HTTP в качестве интерфейса, вы можете позволить Apache HTTP выступать в качестве входной двери для вашего контента для нескольких экземпляров Apache Tomcat. Если один из ваших Apache Tomcats терпит неудачу, Apache HTTP игнорирует его, и ваш системный администратор может спать всю ночь. Этот пункт может быть проигнорирован, если вы используете аппаратный балансировщик нагрузки и кластеризации сервера Apache Tomcat по способности.
  • Кластеризации/Безопасность. Вы также можете использовать Apache в качестве входной двери для разных Apache Tomcats для разных пространств имен URL (/app1/, /app2/, /app3/ или виртуальных хостов). Затем Apache Tomcats может быть каждый в защищенной области, и с точки зрения безопасности вам нужно только беспокоиться о HTTP-сервере Apache. По сути, Apache становится интеллектуальным прокси-сервером.
  • безопасность. Эта тема может повлиять в любом случае. Java имеет менеджер безопасности, в то время как Apache имеет больше mindshare и больше трюков в отношении безопасности. Я не буду вдаваться в это более подробно, но пусть Google будет вашим другом. В зависимости от вашего сценария, один может быть лучше другого. Но также имейте в виду, если вы запускаете Apache с Tomcat - у вас есть две системы для защиты, а не одна.
  • надстройки. Добавление на CGI, perl, PHP очень естественно для Apache. Его медленнее и больше клуджа для Tomcat. Apache HTTP также имеет сотни модулей, которые могут быть подключены по желанию. Apache Tomcat может есть такая возможность, но код еще не написан.
  • оформителей! С Apache HTTP перед Apache Tomcat вы можете выполнить любое количество декораторов, которые Apache Tomcat не поддерживает или не имеет непосредственной поддержки кода. Например, mod_headers, mod_rewrite и mod_alias могут быть написаны для Apache Tomcat, но зачем изобретать колесо, когда Apache HTTP сделал это так хорошо?

Так как все дали вам причины, почему поставить Apache перед Tomcat позвольте мне дать вам несколько причин, почему не to:

  • разъем AJP не поддерживает и не будет поддерживать расширенный IO смысла нет Комета,Websockets и т. д.
  • если вы не используете AJP я заметил, что есть довольно большие накладные расходы прокси при использовании mod_proxy для Apache. Так что если вы ищете с низкой задержкой Apache спереди не будет хороший.
  • Apache имеет довольно большой отпечаток ноги по сравнению с Nginx или Lighttpd и т. д.

положить Apache впереди делает не:

Что Apache дает вам больше плагинов и позволяет запускать различные веб-технологии.

Если вам нужен только Tomcat, вам будет лучше использовать HAProxy или Nginx в качестве балансировщика нагрузки.

  • масштабируемость - как указал Амир и user384706, вы можете загрузить баланс нескольких экземпляров вашего приложения за Apache. Это позволит вам обрабатывать больше объема и повысить стабильность в случае, если один из ваших экземпляров идет вниз.

  • безопасность - Apache, Tomcat и Glassfish все поддерживают SSL, но если вы решите использовать Apache, скорее всего, именно там вы должны настроить его. Если вы хотите дополнительные защита от атак (DoS, XSS, SQL injection и др.)) вы можете установить mod_security брандмауэр веб-приложений.

  • Дополнительные Возможности - Apache имеет кучу хороших модулей, доступных для перезаписи URL, взаимодействия с другими языками программирования, аутентификации и тонны других вещей.

  • производительность - если у вас есть много статического контента, обслуживание его с помощью Apache будет улучшите свою производительность. Если большая часть вашего контента является динамическим, использование Tomcat или Glassfish в одиночку будет так же быстро (возможно, быстрее).(как указано в ответах на этот вопрос, это не так.)

одна из причин разместить Apache перед Tomcat будет для балансировки нагрузки.
Запросы попадают на сервер Apache спереди и распространяются на серверную часть Tomcat тара в зависимости от нагрузки и доступности.
Клиенты знают только один IP (Apache), но запросы распределяются по нескольким контейнерам.
Так что это в том случае, если вы развертываете своего рода распределенное веб-приложение, и вам это нужно надежно.
Если ваш вопрос о простой сети затем приложение см. dbyrne ответ

Если вы используете стек LAMP, вы можете запускать PHP/Ruby вещи с apache и пересылать java вещи в tomcat с mod_jk.