web服务器有哪些?服务器和web服务器有什么区别

web服务器有哪些

WEB服务器也可以称为网站服务器,可以用来放置网站文件,供用户浏览。那么常见的WEB服务器有哪些呢?

①Apache

Apache是世界使用排名的Web服务器软件。它几乎可以运行在所有的计算机平台上。由于Apache是开源免费的,因此有很多人参与到新功能的开发设计,不断对其进行完善。 Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

②IIS

IIS(Internet信息服务)英文Internet Information Server的缩写。它是微软公司主推的服务器。IIS的特点具有:安全性,强大,灵活。

③Nginx

Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。

④Tomcat

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

⑤Lighttpd

Lighttpd是由德国人 Jan Kneschke 领导开发的,基于BSD许可的开源WEB服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。

⑥Zeus

Zeus是一个运行于Unix下的非常的Web 服务器,据说性能超过Apache,是效率的Web 服务器之一。

1.概念

webserver 基本由这些组成

  • 绑定TCP端口,监听客户端(浏览器)请求

  • 处理客户端(浏览器)请求

  • 响应客户端(浏览器)请求

Web服务器只负责处理HTTP协议,只能发送静态页面的内容。而JSP,ASP,PHP等动态内容需要通过CGI、FastCGI、ISAPI等接口交给其他程序去处理。这个其他程序就是应用服务器。

比如Web服务器包括Nginx,Apache,IIS等。而应用服务器包括WebLogic,JBoss等。应用服务器一般也支持HTTP协议,因此界限没这么清晰。但是应用服务器的HTTP协议部分仅仅是支持,一般不会做特别优化,所以很少有见Tomcat直接暴露给外面,而是和Nginx、Apache等配合,只让Tomcat处理JSP和Servlet部分

2.web框架和web服务的区别

web服务器(web server)的主要作用是,接收客户端请求,而web框架(web framework)则是处理web服务器收到的请求,并生成HTML内容,将生成的内容传递给web服务器,再由web服务器返回给客户端。

服务器和客户端之间的连接靠web服务器来维持,web服务器接收到请求后,将请求以及相关的参数传递给web框架,由框架负责生成内容,并将生成的内容传递给web服务器。所以web服务器的职责是接受并返回请求,web服务器的职责是内容生成。

对于Django这类的MVC 框架来说,面临的主要挑战是:易开发;对请求对象的完全访问;保持某种状态的能力;最重要的是能有写出业务级逻辑的方式。

而对于 apache, tomcat, nginx这类web 服务器来说,面临的主要挑战是并行;和数以千计的用户同时保持连接(高并发);能够在一定时间内传送大量数据(吞吐量)。

虽然Django这类的框架自带有web服务器,但是在面对以上挑战(高并发,吞吐量)时,性能太鸡肋,所以需要专门的web服务器。

3.原理

web程序都运行在 TCP/IP 协议上,程序之间使用 socket(套接字) 进行通信,它能够让计算机之间的通信就像写文件和读文件一样简单。 一个 tcp socket 由一个IP地址和端口号组成。

IP地址是一个32位的二进制数,通常被分割为4个"8位二进制数",写成10进制的形式就是我们常见的 174.136.14.108。我们通过IP地址来标识所连接的主机。

端口号是一个范围在0-65535之间的数字,一台主机上可能同时有多个sockets,因此需要端口号进行标识。端口号0-1023 是保留给操作系统使用的,我们可以使用剩下的端口号。

超文本传输协议(HTTP)描述了一种程序之间交换数据的方法,它非常简单易用,在一个socket连接上,客户端首先发送请求说明它需要什么,然后服务器发送响应,并在响应中包含客户端的数据。响应数据也许是从本地磁盘上复制来的,也许是程序动态生成的。传输过程如图:

HTTP请求就是一段文本,任何程序都能生成一个http请求,就像生成文本一样简单。这段文本需要包含以下这些部分:

  • HTTP method:HTTP请求方法。最常用的就是 GET(抓取数据)与POST(更新数据或者上传文件)

  • URL:通常是客户端请求的文件的路径,比如 /research/experiments.html, 但是是否响应文件都是由服务器决定的。

  • HTTP version:HTTP版本。通常是 HTTP/1.0 或 HTTP/1.1

  • header field:HTTP头的键值对,做一些基本设置,就像下面这样:

java 复制代码
#客户端接受的数据类型
Accept: text/html
#客户端接受的语言
Accept-Language: en, fr         
If-Modified-Since: 16-May-2005
  • body: 一些与请求有关的负载数据。比如在一个网站登陆的时候提交登陆表单,那负载数据就是你的账号与密码信息。

HTTP响应的结构类似于请求:

  • status code:状态码。请求成功响应200,请求的文件找不到则响应404。

  • status phrase:对状态码的描述。

什么是 Web Server?

顾名思义,Web Server 就是提供 Web 服务的 Server。

比如我们访问 http:// http://baidu.com,其实就是在使用百度的 Server 提供的服务。

一般来说, Web Server 对外提供的是 HTTP 服务(也可以是其他服务),这就是为什么我们的网址都以「http://」开头。

如何提供 HTTP 服务?

下面是有 Node.js 写的一个最简单的 HTTP server

java 复制代码
// 文件名 index.js// 使用 node index.js 可运行本程序var http = require('http')var server = http.createServer( function (request, response){
    response.end('这是页面内容,你请求的路径是:' + request.url)})

server.listen(8080, function(){
    console.log("正在监听 %s 端口", 8080);});

你不用看懂这段程序,你只需要知道两件事情:

  1. 这段程序监听了当前机器的 8080 端口。

  2. 一旦外部访问当前机器的 8080 端口,这段程序就会返回一段文字。

这就是一个最简单的 HTTP server。

分类

提供 HTTP 服务的 server 分为两类。

静态文件服务器

这种服务器简单地++根据访问路径++,返回对应的文件。

比如用户访问 http:// 123.123.123.123:8080/a/b/c/d.html,那么这种服务器就会在网站根目录找到 a/b/c/d.html 文件,原样返回给用户。

动态内容服务器

这种服务器返回的内容一般不是文件,而是动态生成的字符串(比如从数据库中获取的字符串)。

比如用户访问 http:// http://weibo.com/home,那么这种 http://weibo.com 的服务器则会返回当前用户最新的微博消息。显然每个用户得到的内容是不一样的

WEB服务器、应用程序服务器、HTTP服务器区别

Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL。与客户端的网络浏览器配合。因为Web服务器主要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的(有没有支持除HTTP之外的协议的web服务器,作者没有考证过),说的是一回事。

应用程序服务器(简称应用服务器),我们先看一下微软对它的定义:"我们把应用程序服务器定义为"作为服务器执行共享业务应用程序的底层的系统软件"。 就像文件服务器为很多用户提供文件一样,应用程序服务器让多个用户可以同时使用应用程序(通常是客户创建的应用程序)"

通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑 (business logic)。

以Java EE为例,Web服务器主要是处理静态页面处理和作为 Servlet容器,解释和执行servlet/JSP,而应用服务器是运行业务逻辑的,主要是EJB、 JNDI和JMX API等J2EE API方面的,还包含事务处理、数据库连接等功能,所以在企业级应用中,应用服务器提供的功能比WEB服务器强大的多。

以这样的定义,IIS、Apache、Tomcat都可以属于Web服务器,Weblogic、WebSphere都属于应用服务器。

相关推荐
₯㎕星空&繁华2 小时前
阿里云服务器安装MySQL服务器
服务器·ubuntu·阿里云·云计算
爱倒腾的老唐2 小时前
13、Linux 基本权限
linux·运维·服务器
FIN66682 小时前
募投绘蓝图-昂瑞微的成长密码与未来布局
前端·后端·5g·云原生·信息与通信·射频工程·芯片
罗政3 小时前
CentOS 7.6 系统源码部署 HivisionIDPhotos
linux·运维·centos
cooldream20093 小时前
深度解析中秋节HTML5动画的实现
前端·html·html5
cililin3 小时前
第4章 文件管理
linux·服务器·网络·操作系统·unix
薰衣草23334 小时前
linux练习-2
linux·运维·服务器
驰羽4 小时前
C++网络编程(三)TCP通信流程
服务器·网络·tcp/ip
jump_jump5 小时前
超长定时器 long-timeout
前端·javascript·node.js