Ответ 1
Взято из http://wiki.apache.org/tomcat/FAQ/Connectors#Q3
- кластеризация. Используя Apache HTTP в качестве интерфейса, вы можете позволить Apache HTTP действовать как входная дверь вашего контента в несколько экземпляров Apache Tomcat. Если один из ваших Apache Tomcats терпит неудачу, Apache HTTP игнорирует его, и ваш Sysadmin может спать всю ночь. Эта точка может быть проигнорирована, если вы используете аппаратный loadbalancer и возможности кластеризации Apache Tomcat.
- Кластеры/Безопасность. Вы также можете использовать Apache в качестве входной двери для разных Apache Tomcats для разных пространств имен URL (/app1/,/app2/,/app3/или виртуальных хостов). Затем Tomcats Apache могут находиться в защищенной области и с точки зрения безопасности, вам нужно только беспокоиться о HTTP-сервере Apache. По сути, Apache становится интеллектуальным прокси-сервером.
- Безопасность. Эта тема может повлиять на все в любом случае. У Java есть менеджер безопасности, в то время как у Apache больше ума и больше трюков в отношении безопасности. Я не буду вдаваться в это более подробно, но пусть 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 HTTP быстрее обслуживает статический контент, чем Apache Tomcat. Но если у вас нет сайта с высоким трафиком, этот момент бесполезен. Но в некоторых сценариях Apache Tomcat может быть быстрее Apache httpd. Итак, отметьте свой сайт. Apache Tomcat может выполнять на httpd скорости при использовании соответствующего разъема (APR с включенным sendFile). Скорость не следует рассматривать как фактор при выборе между Apache httpd и Tomcat
- Совместимость сокета/стабильность системы. Apache HTTP имеет лучшую обработку сокетов в отношении условий ошибок, чем Apache Tomcat. Основная причина заключается в том, что Apache Tomcat должен выполнять всю свою обработку сокетов через JVM, которая должна быть перекрестной платформой. Проблема в оптимизации сокетов - это специфическое испытание платформы. В большинстве случаев java-код в порядке, но когда вы также подвергаетесь облучению сброшенными соединениями, недопустимыми пакетами, недействительными запросами от недействительных IP-адресов, Apache HTTP лучше справляется с отбрасыванием этих условий ошибки, чем программа на основе JVM. (YMMV)