區別
Apache是
web伺服器,Tomcat是套用(java)伺服器,它只是一個servlet容器,是Apache的擴展。 Apache和Tomcat都可以做為獨立的web伺服器來運行,但是Apache不能解釋java程式(jsp,
servlet)。
兩者都是一種容器,只不過發布的東西不同:Apache是html容器,功能像IIS一樣;Tomcat是jsp/servlet容器,用於發布jsp及java的,類似的有IBM的websphere、BEA的Weblogic,sun的JRun等等。
打個比方:Apache是一輛卡車,上面可以裝一些東西如html等。但是不能裝水,要裝水必須要有容器(桶),Tomcat就是一個桶(裝像Java這樣的水),而這個桶也可以不放在卡車上。
Apache是世界使用排名第一的Web伺服器。它可以運行在幾乎所有廣泛使用的
計算機平台上。
Apache 源於 NCSAhttpd伺服器,經過多次修改,成為世界上最流行的Web
伺服器軟體之一。Apache取自“a patchy server”的讀音,意思是充滿補丁的伺服器,因為它是自由軟體,所以不斷有人來為它開發新的功能、新的特性、修改原來的缺陷。Apache的特點是簡單、速度快、性能穩定,並可做
代理伺服器來使用。Apache對Linux的支持相當完美。
產品
Apache有多種產品,可以支持SSL技術,支持多個
虛擬主機。Apache是以進程為基礎的結構,進程要比
執行緒消耗更多的系統開銷,不太適合於多處理器環境,因此,在一個Apache Web站點擴容時,通常是增加伺服器或擴充群集節點而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web伺服器,市場占有率達60%左右。世界上很多著名的Yahoo!、W3 Consortium、Financial Times等都是Apache的產物,它的成功之處主要在於它的
原始碼開放、有一支開放的開發隊伍、支持跨平台的套用(可以運行在幾乎所有的Unix、 Windows、Linux系統平台上)以及它的可移植性等方面。
Apache的誕生極富有戲劇性。當NCSA WWW伺服器項目停頓後,那些使用NCSA WWW伺服器的人們開始交換他們用於該伺服器的補丁程式,他們也很快認識到成立管理這些補丁程式的論壇是必要的。就這樣,誕生了Apache Group,後來這個團體在NCSA的基礎上創建了Apache。如果你準備選擇Web伺服器,毫無疑問Apache是你的最佳選擇。
測評
Tomcat是一個
開放原始碼、運行servlet和JSP Web套用軟體的基於Java的Web套用軟體容器。Tomcat Server是根據servlet和JSP規範進行執行的,因此我們就可以說Tomcat Server也實行了Apache-Jakarta規範且比絕大多數商業套用軟體伺服器要好。
Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技術的標準實現,是基於Apache許可證下開發的
自由軟體。Tomcat是完全重寫的Servlet API 2.2和JSP 1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代碼,特別是Apache服務適配器。隨著Catalina Servlet引擎的出現,Tomcat第四版號的性能得到提升,使得它成為一個值得考慮的Servlet/JSP容器,因此目前許多
WEB伺服器都是採用Tomcat。
**JSP=Java Server Pages (Java伺服器網頁)
**ASP=Active Server Pages (活動伺服器網頁)
**CGI=Common Gateway Interface (
通用網關接口)
**J2EE=Java 2 Platform, Enterprise Edition (Java2平台,企業版)
**XML=eXtensible Markup Language (擴展
標記語言)
**IIS=Internet Information Server (網際網路信息伺服器)
漏洞
受影響的版本:
Tomcat 7.0.0 ~ 7.0.20的所有版本
Tomcat 6.0.0 ~ 6.0.33的所有版本
Tomcat 5.5.0 ~ 5.5.33的所有版本
早期的已不再提供支持的版本也可能受影響
Apache Tomcat支持AJP協定,用來通過反向代理到Tomcat的請求和相關的數據,AJP協定的作用是,當一個請求包含請求主體時,一個未經允許的、包含請求主體首部分(或可能所有的)的AJP訊息被傳送到Tomcat。在某些情況下,Tomcat會把這個訊息當作一個新的請求來處理,而不會當作請求主體。這可能導致攻擊者完全控制AJP訊息,允許攻擊者:
下面的AJP連線器實現不會受到影響:
下面的AJP連線器實現會受到影響:
org.apache.coyote.ajp.AjpProtocol (6.0.x, 7.0.x - default)
org.apache.coyote.ajp.AjpNioProtocol (7.0.x)
org.apache.coyote.ajp.AjpAprProtocol (5.5.x, 6.0.x, 7.0.x)
解決措施:
配置反向代理和Tomcat AJP連線器,使用requiredSecret屬性。
使用org.apache.jk.server.JkCoyoteHandler AJP連線器(不適用於 Tomcat 7.0.x)