一、Web 服务器介绍
1、WEB服务简介
- 目前最主流的三个Web服务器是Apache、Nginx、 IIS。
- Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等
- Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下 载。
- WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。 Web 服务器是可以向发出请求的浏览器提供文档的程序:
- 服务器是一种被动程序只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应。
- 最常用的Web服务器是Apache,Nginx和Microsoft的Internet信息服务器(Internet Information Services,IIS)。
- Internet上的服务器也称为Web服务器,是一台在Internet上具有独立IP地址的计算机,可以向 Internet上的客户机提供WWW、Email和FTP等各种Internet服务。
- Web服务器是指驻留于因特网上某种类型计算机的程序。当Web浏览器(客户端)连到服务器上 并请求文件时,服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。服务器使用HTTP(超文本传输协议)与客户机浏览器进行信息交流, 这就是人们常把它们称为HTTP服务器的原因。
- Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程 序。
2、WEB 服务协议
- WEB 服务应用层使用HTTP协议。
- HTML(标准通用标记语言下的一个应用)文档格式。
- 浏览器统一资源定位器(URL)。
- 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为 了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份, 并为浏览器和服务器之间的通信加密。WWW 采用的是浏览器/服务器结构,其作用是整理和储存 各种WWW资源,并响应客户端软件的请求,把客户所需的资源传送到 Windows、UNⅨ 或 Linux 等平台上.
- Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程 序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求 (request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑 (business logic)。
- Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会 返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request), Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态 响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本, JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(serverside)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们(译者注:脚本)的目 的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览 器可以浏览。
- Web服务器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web服务 器里来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序。Web 服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应 (response)的环境,而不会超出职能范围。服务器端(server-side)程序通常具有事务处理 (transaction processing),数据库连接(database connectivity)和消息(messaging)等功 能。
- 虽然Web服务器不支持事务处理或数据库连接池,但它可以配置(employ)各种策略 (strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓冲(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程 序服务器专有的特征。
4、WEB 服务器的工作原理
Web 服务器的工作原理并不复杂,一般可分成如下 4 个步骤:连接过程、请求过程、应答过程以及闭连接。
- 连接过程:Web服务器和其浏览器之间所建立起来的一种连接。查看连接过程是否实现,用户可以 找到和打开socket这个虚拟文件,这个文件的建立意味着连接过程这一步骤已经成功建立。
- 请求过程:Web的浏览器运用socket这个文件向其服务器而提出各种请求。
- 应答过程:运用HTTP协议把在请求过程中所提出来的请求传输到Web的服务器,进而实施任务处理,然后运用HTTP协议把任务处理的结果传输到Web的浏览器,同时在Web的浏览器上面展示上述所 请求之界面。
- 关闭连接:当上一个步骤--应答过程完成以后,Web服务器和其浏览器之间断开连接之过程。
Web 服务器上述 4 个步骤环环相扣、紧密相联,逻辑性比较强,可以支持多个进程、多个线程以及多个进程与多个线程相混合的技术。
二、Apache 和 Nginx 的介绍
1、Apache 介绍
- Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台 上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
- Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。 Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断 有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
- 目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著 名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成 功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所 有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
- Apache 的特性:
几乎可以运行在所有的计算机平台上.
支持最新的http/1.1协议、
简单而且强有力的基于文件的配置(httpd.conf).
支持通用网关接口(cgi)
支持虚拟主机.
支持http认证.
集成perl.
集成的代理服务器
可以通过web浏览器监视服务器的状态, 可以自定义日志.
支持服务器端包含命令(ssi).
支持安全socket层(ssl).
具有用户会话过程的跟踪能力.
支持fastcgi
支持java servlets
2、nginx 介绍
- nginx是俄罗斯人编写的十分轻量级的HTTP服务器,它的发音为“engine X”, 是一个高性能的HTTP 和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 IgorSysoev为俄罗斯访问量第二的 Rambler.ru站点开发.
- Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平 衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的 mod_proxy也有一些问题并且很久没有更新。但是Nginx并不支持cgi方式运行,原因是可以减少 因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。
- nginx做为HTTP服务器,有以下几项基本特性:
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.
无缓存的反向代理加速,简单的负载均衡和容错.
FastCGI,简单的负载均衡和容错.
Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率。它支持内核Poll模
型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数
Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连
接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当
前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶
段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动
的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就
稳定性而言,nginx比lighthttpd更胜一筹。
Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月
也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。
3、Apache 和 Nginx 对比
高并发响应性能非常好。(单台万级并发连接30000-50000/s(简单静态页))
反向代理性能非常好。(可用于负载均衡)
内存 和 cpu 占用率低。(为Apache的1/5-1/10)
功能较 Apache 少(常用功能均有)
对 php 可使用 cgi 方式和 fastcgi 方式,没有模块编译加载方式
4、Apache 和 Nginx总结
- Apache 拥有丰富的模块组件支持,稳定性强,BUG少,动态内容处理强。
- Nginx 轻量级,占用资源少,负载均衡,高并发处理强,静态内容处理高效。
中间件介绍
tomcat
weblogic
jboss
php
uwsgi