Administrator
Published on 2021-06-25 / 162 Visits
0

apache,nginx和tomcat,Jetty

apache

Apache,指是Apache软件基金会下的一个项目——Apache HTTP Server Project。
Apache是HTTP/WEB服务器软件(HTTP Server),只能支持访问静态资源。

HTTP服务器本质上也是一种应用程序,它通常运行在服务器之上,绑定服务器的IP地址并监听某一个tcp端口来接收并处理HTTP请求,这样客户端(一般来说是IE, Firefox,Chrome这样的浏览器)就能够通过HTTP协议来获取服务器上的网页(HTML格式)、文档(PDF格式)、音频(MP4格式)、视频(MOV格式)等等资源。
image.png

Nginx

与apache一样,nginx是HTTP/WEB服务器软件,只能支持访问静态资源。
此外,nginx支持反向代理。同时也是一个IMAP/POP3/SMTP 代理服务器。
此外,nginx也可以通过模块开发来提供类似tomcat的应用功能。

Tomcat

与apache,nginx不同的是,Tomcat是支持运行Servlet/JSP应用程序的容器(Container),它除了可以作为http服务器使用,也是应用(Java)服务器(Application Server)。
其除了支持静态资源外,也支持动态资源。如果客户端请求动态页面,则是Tomcat服务器响应请求。

Jetty

Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。
与tomcat类似,相对于Tomcat而言,Jetty更轻量级。

HTTP Server与Application Server

一个 HTTP Server 关心的是 HTTP 协议层面的传输和访问控制,所以在 Apache/Nginx 上你可以看到代理、负载均衡等功能。客户端通过 HTTP Server 访问服务器上存储的资源(HTML 文件、图片文件等等)。通过 CGI 技术,也可以将处理过的内容通过 HTTP Server 分发,但是一个 HTTP Server 始终只是把服务器上的文件如实的通过 HTTP 协议传输给客户端。

而应用服务器,则是一个应用执行的容器。它首先需要支持开发语言的 Runtime(对于 Tomcat 来说,就是 Java),保证应用能够在应用服务器上正常运行。其次,需要支持应用相关的规范,例如类库、安全方面的特性。对于 Tomcat 来说,就是需要提供 JSP/Sevlet 运行需要的标准类库、Interface 等。为了方便,应用服务器往往也会集成 HTTP Server 的功能,但是不如专业的 HTTP Server 那么强大,所以应用服务器往往是运行在 HTTP Server 的背后,执行应用,将动态的内容转化为静态的内容之后,通过 HTTP Server 分发到客户端。

参考

https://www.zhihu.com/question/32212996?sort=created