一、nginx經常使用作靜態內容服務和代理服務器java
- 直面外來請求轉發給後面的應用服務
- nginx也能夠經過模塊開發來提供應用功能
- Apache/Nginx 應該叫作「HTTP Server」
二、tomcat更多用來作作一個應用容器,讓java web app跑在裏面的東nginx
- 同級別的有jboss,jetty等東西
- tomcat也能夠直接提供http服務,一般用在內網和不須要流控等小型服務的場景
- Tomcat 則是一個「Application Server」
- 更準確的來講,是一個「Servlet/JSP」應用的容器
- Ruby/Python 等其餘語言開發的應用也沒法直接運行在 Tomcat 上
三、 HTTP Server 關心的是 HTTP 協議層面的傳輸和訪問控制web
- 在 Apache/Nginx 上你能夠看到代理、負載均衡等功能
- 客戶端經過 HTTP Server 訪問服務器上存儲的資源(HTML 文件、圖片文件等等)
- CGI 技術,也能夠將處理過的內容經過 HTTP Server 分發
- HTTP Server 始終只是把服務器上的文件如實的經過 HTTP 協議傳輸給客戶端
四、應用服務器,則是一個應用執行的容器tomcat
- 首先須要支持開發語言的 Runtime(對於 Tomcat 來講,就是 Java)
- 保證應用可以在應用服務器上正常運行
- 須要支持應用相關的規範,例如類庫、安全方面的特性
五、爲了方便,應用服務器每每也會集成 HTTP Server 的功能安全
- 可是不如專業的 HTTP Server 那麼強大
- 因此應用服務器每每是運行在 HTTP Server 的背後,執行應用
- 將動態的內容轉化爲靜態的內容以後,經過 HTTP Server 分發到客戶端