HTTP服务器:Nginx-Apache-Tomcat

基本概念

网站页面的类型和区别

  • 静态页面
    通常以html、htm、shtml等结尾的文件,所有数据都是写在文件里的。客户端加载静态页面时,无需对数据库进行操作,直接将文件内容呈现出来。
    • 静态页面速度快,不需要从数据库里面提取数据,也不会对服务器产生压力。
    • 由于数据都是写在文件里,很有可能会导致文件非常大,占用大量的服务器磁盘空间,每次添加内容都会生成新的文件。更改源代码必须全部更改,而不能更改一个地方,全站的静态页面就自动更改了。
  • 动态页面
    通常是以php、jsp、asp等结尾的文件,不是独立存在于服务器上的网页文件,当用户请求时服务器才会返回一个完整的页面。数据都是存储在数据库中的,根据用户发出的不同请求从数据库里提取不同的数据,从而提供个性化的网页内容。
    • 占用磁盘空间小,一般几万条数据的网站,文件大小可能只有几M。数据都是从数据库里提取出来,如果需要修改某些数据,可直接修改数据库,所有动态页面就都会自动更新。
    • 访问速度慢,动态页面需要处理成静态内容,才能呈现给用户。动态页面的数据是从数据库里提取出来的,如果访问量大的话,会导致数据库的压力很大。现在的动态网站大多数都使用了缓存技术,但相对于静态网站而言,服务器的压力比较大,访问的人越多服务器的压力越大。
  • 伪静态
    假静态页面,通过将动态页面的URL地址重写,改写成以html、htm等结尾的静态URL地址,实际上还是动态页面。
    • 方便搜索引擎进行收录。在SEO方面,伪静态和静态页面的功能是相同的。
    • 相对于静态页面和动态页面,服务器的性能消耗是最大的。静态页面可以节省服务器的资源消耗,而伪静态是增加服务器消耗,因为rewrite还需要消耗额外的资源。

网站页面的处理流程

在这里插入图片描述

  • 访问静态页面
    当用户(浏览器)发起一个访问网站资源的请求时,首先由DNS服务器将域名解析为网站服务器的IP地址,http或者https协议将用户的请求发送给此IP地址对应的web服务器,web服务器收到请求后就在自己的网站目录下寻找相对应的页面文件(例如index.html),将文件内容返回给用户(浏览器),浏览器收到web服务器的响应后,接收并下载服务器的html静态代码,然后浏览器解读代码,最终将网页内容呈现出来。
  • 访问动态页面
    比访问静态页面多一步解析动态脚本的步骤。首先DNS域名解析,然后web服务器收到用户的请求后找到对应的php脚本文件,然后将脚本委托给php服务器处理,php服务器将脚本解析成静态代码,再将静态代码返回给web服务器,web服务器再将静态代码返回给用户,最终在浏览器上呈现出来。
  • 访问数据库
    比访问动态页面多一步访问数据库的步骤,首先DNS域名解析,web服务器收到请求后找到对应的php脚本文件,将此脚本委托给php服务器处理,php服务器通过解析脚本取连接数据库,从数据库里将数据取出来,再将数据生成静态代码发给web服务器,web服务器再将静态代码返回给用户,最终在浏览器上呈现出来。

Apache

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的Web服务器软件,可以在大多数计算机操作系统中运行,是目前最流行的web服务器端软件之一。Apache支持模块众多,性能稳定,本身只支持静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面。常见的网站架构有:Apache+PHP、Apache+Tomcat等。

  • 配置相对复杂。
  • Apache是静态解析,适合静态HTML、图片等, 相对于Tomcat服务器来说处理静态文件是它的优势,速度快。
  • Apache自身不支持动态页面,但可以通过扩展脚本,模块等支持动态页面。
  • Apache是同步多进程模型,一个连接对应一个进程。
  • Apache比Nginx占用更多的内存及资源,Apache在处理请求时是阻塞型的。
  • Apache可以支持PHP、CGI、Perl,但是要使用Java,需要Tomcat在Apache后台支撑,将Java请求由Apache转发给Tomcat处理。
  • Apache超稳定,对PHP支持较简单,Nginx需要配合其他后端用,处理动态请求有优势,建议使用前端Nginx抗并发,后端Apache集群配合。
  • Apache的rewrite(重写)比Nginx强大,支持动态页面,支持的模块多,基本涵盖所有应用,性能稳定,Nginx相对bug较多。
  • Apache的组件比Nginx多。

Nginx

Nginx是一款开源的轻量级的web服务器/反向代理服务器软件,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。其特点是占有内存少,并发能力强,也是目前比较流行的web服务器软件之一。静态页面处理能力较强,尤其是反向dialing服务表现突出,常被用作负载均衡和代理服务器使用。常见的网站架构有:Nginx+PHP、Nginx+Tomcat、Nginx+Apache+PHP等。

  • Nginx配置简洁
  • Nginx只适合静态和反向代理,常用作静态内容服务器和代理服务器,直接将外来请求转发给后面的应用服务器。Nginx静态处理性能比Apache高3倍以上。
  • Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求需转发请求到后台交由Tomcat进行处理。
  • Nginx是异步的,多个连接(万级别)可以对应一个进程。
  • Nginx比Apache占用更少的内存及资源,抗并发,Nginx处理请求时异步非阻塞的,在高并发下Nginx能保持低资源、低消耗、高性能、高度模块化的设计,编写模块相对简单提供负载均衡。
  • Nginx轻量级,负载性能很好,反向代理,抗并发,处理静态文件好,耗费内存少,适合做前端服务器。

Tomcat

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目的一个核心项目。Tomcat服务器是一个免费的开放源代码的Java Web应用服务器软件,常被称为servlet容器,用来处理JSP页面和运行Servlet。Tomcat是应用(Java)服务器,它只是一个Servlet容器,可以任务是Apache的扩展,但是可以独立于Apache运行。Tomcat静态页面处理能力较弱,强项是运行Java Servlet(用Java编写的服务器端程序)。

  • 缺点
    • Tomcat只能做Java服务器。
    • 处理静态内容的能力不如Apache和Nginx。
    • Tomcat在高并发场景下,其接受的最大并发连接数是有限制的,连接数过多会导致Tomcat处于‘僵死’状态。
  • 优点
    • 动态解析容器,处理动态请求,是编译JSP/Servlet的容器。
  • 端口:
    • 8005 关闭Tomcat通信接口
    • 8009 与其他HTTP服务器通信接口,用于HTTP服务器集合
    • 8080 建立HTTP连接用,如浏览器访问

Tomcat结合Apache、Nginx实现高性能的Web服务器

Tomcat与Apache、Nginx结合适用有如下原因:

  • Tomcat处理HTML的能力不如Apache和Nginx,Tomcat处理静态内容的速度不如Apache和Nginx。
  • Tomcat接受的最大并发数有限,连接数过多,会导致Tomcat处于‘僵死’状态,对后续的连接失去响应,需要结合Nginx一起使用。

通常情况下,Tomcat与Nginx/Apache 结合使用,Nginx、Apache既可以提供web服务,也可以转发动态请求至Tomcat服务器上。但在一个高性能的站点上,通常Nginx、Apache只提供代理的功能,即转发请求至Tomcat服务器上,而对于静态内容的响应,则由前端负载均衡器来转发至专门的静态服务器上进行处理。
在这里插入图片描述
在这种架构中,当haproxy或nginx作为前端代理时,如果是静态内容,如html、css等内容,则直接交给静态服务器处理;如果请求的图片等内容,则直接交给图片服务器处理;如果请求的是动态内容,则交给tomcat服务器处理,不过在tomcat服务器上,同时运行着nginx服务器,此时的nginx作为静态服务器,它不处理静态请求,它的作用主要是接受请求,并将请求转发给tomcat服务器的,除此之外,nginx没有任何作用。

  • 严格意义上来讲,Apache和Nginx应该叫作HTTP Server,Tomcat是一个Application Server,是一个Servlet、JSP应用的容器。客户端通过HTTP Server访问服务器上存储的资源(HTML文件、图片文件等),HTTP Server始终只是把服务器上的文件如实通过HTTP协议传输给客户端。应用服务器往往是运行在HTTP Server的背后,执行应用,将动态的内容转换为静态的内容之后,通过HTTP Server分发到客户端,作为静态服务器的Nginx只是把请求做了分发,不做处理。

参考资料
Nginx和Apache和Tomcat的区别及优缺点
浅谈Tomcat 、Apache、 Nginx的区别及优缺点
详谈Apache、Nginx和tomcat的区别以及处理静态页面和动态页面的方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值