浅谈Nginx和Apache和Tomcat

首先,我们从Web服务器和Web引用服务器讲起

web服务器

一般我们把发出http请求的一方称作请求方,比如浏览器就是http的请求方,那么应答方就是我们常说的web服务器(web Server)。
在硬件层面上,web服务器可以简单的理解为另一台性能更好的主机。不过在现实生活中,不仅仅只是一台主机,而是利用反向代理、负载均衡等等技术组成的一大群机房。

在软件层面上指的是提供web服务的应用程序。我的理解就是响应http请求,返回超文本文件等数据,或者把请求转发给后面的Tomcat、node.js等应用服务器。因此,web服务器是静态服务器。

常见的web服务器有Apache,Nginx,Tomcat等。
注1:Tomcat更多的做为应用服务器使用。
注2:http服务器
http服务器就是指使用http协议传输资源提供服务,由于应用层通讯协议主要就是http协议,所以在普遍情况下,web服务器==http服务器

应用服务器

应用程序服务器通过各种协议把商业逻辑暴露给客户端应用程序。能实现动态网页技术,也称之为应用容器,web容器等

应用服务器不等于网站后台,但是在应用服务器上可以部署网站后台。通常,Web服务器会有插件来支持脚本语言,比如PHP、ASP等,也可以生成动态的HTTP内容。那为什么要使用应用服务器呢?

应用服务器可以更好的适应超大用户量的访问,并杜绝sql注入等安全问题,提供动态功能的支持。

常见的应用服务器有,Tomcat、Jetty、Undertow等。应用服务器也包含http服务
如果使用的是tomcat应用服务器:
那么任何的 web项目资源文件都要部署 在tomcat应用服务器中(资源文件必须放在tomcat安装目录中),都将不能访问得到。其他应用服务器类似。
访问流程:
浏览器–>web服务器–>应用服务器–>数据库

相关名词解释:

1、HTML

HTML即超文本标记语言。使用HTML语言,将所需要表达的信息按某种规则写成HTML文件,通过专用的浏览器来识别,并将这些HTML文件“翻译”成可以识别的信息,即现在所见到的网页。

2、Servlet

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

3、JSP

3.1:JSP(Java Server Page),用于展示信息操作。servlet弥补展示信息不方便的缺点,引入了JSP。JSP本质上也是一个servlet,其实是对Servlet进行了包装而已。!!!!JSP就是在HTML页面中嵌入了java代码(jsp= html+java)。

3.2:JSP的特点:
JSP的全称是Java Server Pages,它和Servlet技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。
jsp这门技术的最大的特点在于,写jsp就像在写HTML,但:
1)、它相对于html而言,html只能为用户提供静态数据,而jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
2)、相比Servlet而言,Servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。

了解了这些,我们开始谈Nginx和Apache和Tomcat。

Nginx

是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。其特点是占有内存少,并发能力强,易于开发,部署方便。Nginx 支持多语言通用服务器。
注:IMAP/POP3:是一种stream传输协议,常常被用来做一些邮件传输。
缺点:Nginx 只适合静态和反向代理。
优点:负载均衡、反向代理、处理静态文件优势。Nginx 处理静态请求的速度高于Apache。
Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。

Apache

它是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上。Apache支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。

缺点:配置相对复杂,自身不支持动态页面。
优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。
Apache是一个Web服务器环境程序,启用他可以作为Web服务器使用,不过只支持静态网页如(ASP,PHP,CGI,JSP)等动态网页的就不行。如果要在Apache环境下运行JSP的话就需要一个解释器来执行JSP网页,而这个JSP解释器就是Tomcat。

Tomcat

Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。因为由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。但是,不能将Tomcat和Apache HTTP服务器混淆,Apache HTTP服务器是一个用C语言实现的HTTPWeb服务器;
缺点:可以说Tomcat 只能用做java服务器
优点:动态解析容器,处理动态请求,是编译JSP/Servlet的容器。

Nginx与Apache比较

1、nginx相对于apache的优点

轻量级,同样起web 服务,比apache占用更少的内存及资源 ;
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 ;
高度模块化的设计,编写模块相对简单 ;
提供负载均衡。

2 、apache 相对于nginx 的优点

apache的 rewrite 比nginx 的强大(Apache在处理动态有优势,Nginx并发性比较好,CPU内存占用低,如果rewrite频繁,那还是Apache较适合) ;
支持动态页面;
支持的模块多,基本涵盖所有应用;
性能稳定,而nginx相对bug较多。

3、 两者优缺点比较

Nginx 配置简洁, Apache 复杂 ;
Nginx 静态处理性能比 Apache 高 3倍以上 ;
Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用;
Apache 的组件比 Nginx 多 ;
Apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程;
nginx处理静态文件好,耗费内存少;
动态请求由apache去做,nginx只适合静态和反向;
Nginx适合做前端服务器,负载性能很好;
Nginx本身就是一个反向代理服务器 ,且支持负载均衡

总结

1、服务器分静态服务器和动态服务器,web服务器是静态服务器,应用服务器是动态服务器
应用服务器也可以处理静态需求,但是由于没有web服务器那么专业,所以一般搭配使用,常见如(Nginx+Tomcat)
Apache,Nginx等是静态服务器,是web服务器,也是web服务器软件
tomcat是动态服务器,也可以称之为web容器、应用容器等
网站后台不是web服务器,但是当web做为一种应用来表达的时候,web服务器可能在口头上会被理解为后台。

2、Nginx优点:负载均衡、反向代理、处理静态文件优势。nginx处理静态请求的速度高于apache;
Apache优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。
Tomcat:动态解析容器,处理动态请求,是编译JSP\Servlet的容器,Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。
实际使用中Apache与Tomcat常常是整合使用:
如果客户端请求的是静态页面,则只需要Apache服务器响应请求。
如果客户端请求动态页面,则是Tomcat服务器响应请求。
因为JSP是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。可以理解Tomcat为Apache的一种扩展。

索引文章:
[1] https://blog.csdn.net/weixin_42217106/article/details/105583185?biz_id=102&utm_term=%E5%B8%B8%E7%94%A8%E7%9A%84web%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%92%8C%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-105583185&spm=1018.2118.3001.4187

[2] https://blog.csdn.net/weixin_44221613/article/details/88410701?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160205027519724836713419%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=160205027519724836713419&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v28_p-1-88410701.pc_first_rank_v2_rank_v28_p&utm_term=apache%2Ctomcat%2Cnginx%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2118.3001.4187

相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页