一文搞懂Web服务器

216 阅读2分钟

在日常的web开发中,永远离不开服务器这个话题:Nginx,Tomcat,Apache Http Server,Liunx等等。那么,服务器到底有哪些类型?分别是做什么的呢?

服务器一般分为两部分:

  • 硬件:一台电脑(通常为Linux系统,我们租用的阿里云等等),这台电脑上运行着至少一个服务器软件,能够处理一些专业请求。

  • 软件:一个计算机程序,能接收并处理请求然后返回响应。日常开发中常用的几个Web服务器:Apache Http Server、IIS、Nginx。

服务器用来做什么

Web服务器就是一个Web资源的仓库,当用户通过浏览器来访问时,服务器就读取其中存储的资源,并把数据发送给来访者。使用Web服务器,开发者只需要关注web资源怎么编写,而不需要关心资源如何发送到客户端手中,从而极大的减轻了开发者的开发工作量。

为什么引入Tomcat

Web服务器通常只能够处理静态资源的请求,这在正常的开发中是远远不够的。所以引入了Servlet来扩展。Servlet是位于web服务器内部的服务器端的Java程序,可以对浏览器发送的请求进行捕获并处理。web服务器通过调用servlet来处理动态资源的请求,比如访问数据库。

但是Servlet本身是不能直接使用的,必须由容器将它实例化并调用其方法产生一个响应。之后这个响应由Servlet容器返回给web服务器,Web服务器包装这个响应并以http的形式返回给浏览器(客户端)。

Tomcat就是一个优秀的Servlet容器实现。

项目中服务器的部署

如果请求是静态网页则由Web Server处理,并将结果返回;如果是动态请求,Web Server会将解析工作转发给Tomcat处理,Tomcat处理后将结果通过Web Server返回。这样可以达到分工合作,实现负载均衡,提高系统的性能。

目前较为常用的Web server是Nginx。

值得注意的是,Tomcat本身也可以处理静态资源,所以在一些小的web应用中充当了以上二者的角色。但由于这样效率不够高,在稍微大点的项目中都会动静分离。