一、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 分发到客户端