常见的web服务器

常见的web服务器

常见的web服务器主要包括:Nginx、Apache、Tomcat、Jetty。

介绍各个服务器前,有必要讲一下Apache与Tomcat关系,服务器间的优缺点也是相比于apache与tomcat而言。

Apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP)Tomcat只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行 ,同为服务器,Tomcat的特别之处在于它还是Java的Web容器,能够处理JSP;而Apache一般是与PHP结合,并不能处理JSP。

Apache常常与Tomcat整合起来使用,Apache处理静态页面,比如Html页面,而Tomcat负责编译处理JSP页面与Servlet。

Apache是一个Web服务器环境程序,启用他可以作为Web服务器使用,不过只支持静态网页如(ASP,PHP,CGI,JSP)等动态网页的就不行。如果要在Apache环境下运行JSP的话就需要一个解释器来执行JSP网页,而这个JSP解释器就是Tomcat。

Nginx(engine x)

是一个高性能的HTTP和反向代理服务器、一个IMAP/POP3/SMTP服务器,是一款轻量级的Web服务器。

Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。

优点

高性能,高并发,高效率

  1. 轻量级,高性能http和反向代理服务器。
  2. 高并发,节省带宽
    • 连接达到2-4万个
    • 节省带宽: 支持GZIP压缩,可以添加浏览器本地缓存的Header头。
    • Rewrite重写规则 :根据域名,URL的不同将HTTP请求分到不同的后端服务器群组
    • 内置的健康检查功能: Nginx Proxy 后端的某台web服务器宕机也不会影响前端访问
  3. 比apache占用更少的内存cpu等系统资源
  4. Nginx 静态处理性能比 Apache 高 3倍以上
  5. 安装非常简单 , 配置文件非常简洁(还能够支持perl语法)

缺点

1、nginx只适合静态和反向 ,动态请求要apache去做

2、rewrite频繁时,不如Apache

Apache

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。

Apache HTTP Server和Nginx都能够将某一个文本文件的内容通过HTTP协议返回到客户端,但是这个文本文件的内容是固定的——也就是说无论何时、任何人访问它得到的内容都是完全相同的,这样的资源我们称之为静态资源

优点

  1. 相对于Tomcat服务器来说,Apache处理静态文件速度快。
  2. apache的 rewrite 比nginx 的强大
  3. Apache性能稳定

缺点

  1. 属于老牌重量级web服务器(重量级主要是在软件包的大小上比较大,软件的耦合度大)
  2. 速度、性能不及其他轻量级web服务器,并且消费内存较高。
  3. 消耗的cpu等服务器资源比较大,因为使用传统的select模型,比较稳定的Prefork模式为多进程模式,需要经常派生子进程。
  4. 配置相对复杂,自身不支持动态页面,不适合高并发场景。

Tomcat

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。

动态资源:在不同的时间、不同的客户端访问得到的内容是不同的,例如:

包含显示当前时间的页面
显示当前IP地址的页面
Tomcat也可以认为是HTTP服务器,但通常它仍然会和Nginx配合在一起使用:

动静态资源分离——运用Nginx的反向代理功能分发请求:所有动态资源的请求交给Tomcat,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器,这样能大大减轻Tomcat的压力。

负载均衡,当业务压力增大时,可能一个Tomcat的实例不足以处理,那么这时可以启动多个Tomcat实例进行水平扩展,而Nginx的负载均衡功能可以把请求通过算法分发到各个不同的实例进行处理

优点

  1. Tomcat是开源的Web服务器,经过长时间的发展,性能、稳定性等方面都非常好。
  2. Tomcat是开源免费、功能强大易用的
  3. 与Apache HTTP Server相比,Tomcat能够动态的生成资源并返回到客户端。

缺点

  1. 在静态页面处理能力上,Tomcat不如Apache

Jetty

Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。

优点:

  1. Jetty可作为一个嵌入式服务器,即:如可以在应用中加入Jetty的JAR文件,应用便可以在代码中对外提供Web服务。
  2. 相对于Tomcat而言,Jetty更轻量级
  3. Jetty 可以同时处理大量连接而且可以长时间保持这些连接。例如像一些 web 聊天应用非常适合用 Jetty 做服务器,像淘宝的 web 旺旺就是用 Jetty 作Servlet 引擎。

缺点:

  1. 在处理少数非常繁忙的连接上没有Tomcat强,也就是说连接的生命周期如果短的话,Tomcat 的总体性能更高

对比

Nginx与Apache比较

  • nginx优点

    • 轻量级,同样起web 服务,比apache占用更少的内存及资源

    • 抗并发,nginx 处理请求是是异步的,多个连接(万级别)可以对应一个进程, 而apache是同步多进程模型,一个连接对应一个进程,在高并发下nginx 能保持低资源低消耗高性能

    • Nginx适合做前端服务器,负载性能很好,本身就是一个反向代理服务器

    • Nginx 静态处理性能比 Apache 高 3倍以上 ,耗费内存少

    • 安装简单 ,Nginx 配置简洁(还能够支持perl语法),Apache 复杂

    • 高度模块化的设计,编写模块相对简单

    • 社区活跃,各种高性能模块出品迅速

  • apache优点

    • apache的 rewrite 比nginx 的强大 ;
    • 动态请求由apache去做,nginx只适合静态和反向;
    • Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用;
    • Apache 的组件比 Nginx 多 ,基本涵盖所有应用;
    • 性能稳定,而nginx相对bug较多。

Apache与Tomcat的比较

  • 相同点:

    • 两者都是Apache组织开发的

    • 两者都有HTTP服务的功能

    • 两者都是免费的

  • 不同点:

    • Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等),Tomcat是Apache组织在符合Java EE的JSP、Servlet标准下开发的一个JSP服务器;

    • Apache是一个Web服务器环境程序,启用他可以作为Web服务器使用,不过只支持静态网页如(ASP,PHP,CGI,JSP)等动态网页的就不行。如果要在Apache环境下运行JSP的话就需要一个解释器来执行JSP网页,而这个JSP解释器就是Tomcat;

    • Apache:侧重于HTTPServer ,Tomcat:侧重于Servlet引擎,如果以Standalone方式运行,功能上与Apache等效,支持JSP,但对静态网页不太理想;

    • Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立Apache运行,实际使用中Apache与Tomcat常常是整合使用;

    • 如果客户端请求的是静态页面,则只需要Apache服务器响应请求。  如果客户端请求动态页面,则是Tomcat服务器响应请求。 因为JSP是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销,可以理解Tomcat为Apache的一种扩展。

Tomcat与Jetty的比较

  • 相同点:

    • 两者都是一个轻量级的基于Java的web容器

    • 两者都是免费、开源的

  • 不同点:

    • Jetty可作为一个嵌入式服务器,即:如可以在应用中加入Jetty的JAR文件,应用便可以在代码中对外提供Web服务;
    • 相对于Tomcat而言,Jetty更轻量级;
    • Jetty 可以同时处理大量连接而且可以长时间保持这些连接。例如像一些 web 聊天应用非常适合用 Jetty 做服务器,像淘宝的 web 旺旺就是用 Jetty 作为 Servlet 引擎;
    • 在处理少数非常繁忙的连接上没有Tomcat强,也就是说连接的生命周期如果短的话,Tomcat 的总体性能更高。
posted @ 2023-03-21 19:37  烹小鲜也  阅读(311)  评论(0编辑  收藏  举报