web服务器 订阅
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache、 Nginx 、IIS。 展开全文
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache、 Nginx 、IIS。
信息
中文名
WEB服务器
外文名
Web Server
其他名字
WWW(WORLD WIDE WEB)服务器
WEB服务器词义辨析
什么是网络服务器?网络服务器是网络环境下为客户提供某种服务的专用计算机。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。 WWW 是 Internet 的多媒体信息查询工具,是 Internet 上近年才发展起来的服务,也是发展最快和目前用的最广泛的服务。正是因为有了WWW工具,才使得近年来 Internet 迅速发展,且用户数量飞速增长。Web服务器是可以向发出请求的浏览器提供文档的程序。1、服务器是一种被动程序:只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应 。2 、最常用的Web服务器是Apache和Microsoft的Internet信息服务器(Internet Information Services,IIS)。3、Internet上的服务器也称为Web服务器,是一台在Internet上具有独立IP地址的计算机,可以向Internet上的客户机提供WWW、Email和FTP等各种Internet服务。4、Web服务器是指驻留于因特网上某种类型计算机的程序。当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。服务器使用HTTP(超文本传输协议)与客户机浏览器进行信息交流,这就是人们常把它们称为HTTP服务器的原因。Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。WWW是 World Wide Web (环球信息网)的缩写,也可以简称为 Web,中文名字为“万维网”。它起源于1989年3月,由欧洲量子物理实验室CERN(the European Laboratory for Particle Physics)所发展出来的主从结构分布式超媒体系统。通过万维网,人们只要通过使用简单的方法,就可以很迅速方便地取得丰富的信息资料。由于用户在通过 Web浏览器访问信息资源的过程中,无需再关心一些技术性的细节,而且界面非常友好,因而 Web 在Internet 上一推出就受到了热烈的欢迎,走红全球,并迅速得到了爆炸性的发展。长期以来,人们只是通过传统的媒体(如电视、报纸、杂志和广播等)获得信息。但随着计算机网络的发展,人们想要获取信息,已不再满足于传统媒体那种单方面传输和获取的方式,而希望有一种主观的选择性。网络上提供各种类别的数据库系统,如文献期刊、产业信息、气象信息、论文检索等等。由于计算机网络的发展,信息的获取变得非常及时、迅速和便捷。到了1993年,WWW 的技术有了突破性的进展,它解决了远程信息服务中的文字显示、数据连接以及图像传递的问题,使得 WWW 成为 Internet 上最为流行的信息传播方式。Web 服务器成为 Internet 上最大的计算机群,Web 文档之多、链接的网络之广,令人难以想象。可以说,Web 为 Internet 的普及迈出了开创性的一步,是近年来 Internet 上取得的最激动人心的成就。WWW 采用的是浏览器/服务器结构,其作用是整理和储存各种WWW资源,并响应客户端软件的请求,把客户所需的资源传送到 Windows 95(或Windows98)、Windows NT、UNⅨ 或 Linux 等平台上。使用最多的 web server服务器软件有两个:微软的信息服务器(iis),和Apache。通俗的讲,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)脚本,服务器端(server-side)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)经常被误认为仅仅是应用程序服务器专有的特征。应用程序服务器(The Application Server)根据我们的定义,作为应用程序服务器,它通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程序。Web服务器主要是处理向浏览器发送HTML以供浏览,而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就象你调用对象的一个方法(或过程语言中的一个函数)一样。应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC、一个Web服务器或者甚至是其它的应用程序服务器上。在应用程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反,这种信息就是程序逻辑(program logic)。正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态HTML,所以客户端才可以随心所欲的使用这种被暴露的商业逻辑。在大多数情形下,应用程序服务器是通过组件(component)的应用程序接口(API)把商业逻辑暴露(expose)(给客户端应用程序)的,例如基于J2EE(Java 2 Platform,Enterprise Edition)应用程序服务器的EJB(Enterprise JavaBean)组件模型。此外,应用程序服务器可以管理自己的资源,例如看大门的工作(gate-keeping duties)包括安全(security),事务处理(transaction processing),资源池(resource pooling), 和消息(messaging)。就象Web服务器一样,应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。例如,设想一个在线商店(网站)提供实时定价(real-time pricing)和有效性(availability)信息。这个站点(site)很可能会提供一个表单(form)让你来选择产品。当你提交查询(query)后,网站会进行查找(lookup)并把结果内嵌在HTML页面中返回。网站可以有很多种方式来实现这种功能。我要介绍一个不使用应用程序服务器的情景和一个使用应用程序服务器的情景。观察一下这两中情景的不同会有助于你了解应用程序服务器的功能。情景1:不带应用程序服务器的Web服务器在此种情景下,一个Web服务器独立提供在线商店的功能。Web服务器获得你的请求(request),然后发送给服务器端(server-side)可以处理请求(request)的程序。此程序从数据库或文本文件(flat file,译者注:flat file是指没有特殊格式的非二进制的文件,如properties和XML文件等)中查找定价信息。一旦找到,服务器端(server-side)程序把结果信息表示成(formulate)HTML形式,最后Web服务器把会它发送到你的Web浏览器。简而言之,Web服务器只是简单的通过响应(response)HTML页面来处理HTTP请求(request)。情景2:带应用程序服务器的Web服务器情景2和情景1相同的是Web服务器还是把响应(response)的产生委托(delegates)给脚本(译者注:服务器端(server-side)程序)。然而,你可以把查找定价的商业逻辑(business logic)放到应用程序服务器上。由于这种变化,此脚本只是简单的调用应用程序服务器的查找服务(lookup service),而不是已经知道如何查找数据然后表示为(formulate)一个响应(response)。这时当该脚本程序产生HTML响应(response)时就可以使用该服务的返回结果了。在此情景中,应用程序服务器提供(serves)了用于查询产品的定价信息的商业逻辑。(服务器的)这种功能(functionality)没有指出有关显示和客户端如何使用此信息的细节,相反客户端和应用程序服务器只是来回传送数据。当有客户端调用应用程序服务器的查找服务(lookup service)时,此服务只是简单的查找并返回结果给客户端。通过从响应产生(response-generating)HTML的代码中分离出来,在应用程序之中该定价(查找)逻辑的可重用性更强了。其他的客户端,例如收款机,也可以调用同样的服务(service)来作为一个店员给客户结帐。相反,在情景1中的定价查找服务是不可重用的因为信息内嵌在HTML页中了。总而言之,在情景2的模型中,在Web服务器通过回应HTML页面来处理HTTP请求(request),而应用程序服务器则是通过处理定价和有效性(availability)请求(request)来提供应用程序逻辑的。警告(Caveats)XML Web Services已经使应用程序服务器和Web服务器的界线混淆了。通过传送一个XML有效载荷(payload)给服务器,Web服务器现在可以处理数据和响应(response)的能力与以前的应用程序服务器同样多了。另外,大多数应用程序服务器也包含了Web服务器,这就意味着可以把Web服务器当作是应用程序服务器的一个子集(subset)。虽然应用程序服务器包含了Web服务器的功能,但是开发者很少把应用程序服务器部署(deploy)成这种功能(capacity)(译者注:这种功能是指既有应用程序服务器的功能又有Web服务器的功能)。相反,如果需要,他们通常会把Web服务器独立配置,和应用程序服务器一前一后。这种功能的分离有助于提高性能(简单的Web请求(request)就不会影响应用程序服务器了),分开配置(专门的Web服务器,集群(clustering)等等),而且给最佳产品的选取留有余地。
收起全文
精华内容
参与话题
问答
  • 常见Web服务器简介

    万次阅读 2014-08-11 18:37:59
    常见Web服务器简介   Web服务器也称为WWW (WORLD WIDE WEB)服务器、HTTP服务器,其主要功能是提供网上信息浏览服务。  Unix和Linux平台下的常用Web服务器有Apache,Nginx,Lighttpd,Tomcat,IBM WebSphere、BEA...


    Web服务器也称为WWW (WORLD WIDE WEB)服务器、HTTP服务器,其主要功能是提供网上信息浏览服务。

      Unix和Linux平台下的常用Web服务器有Apache,Nginx,Lighttpd,Tomcat,IBM WebSphere、BEA Weblogic等,其中应用最广泛的是Apache。而WindowsNT/2000/2003平台下最常用的服务器则是微软公司的IIS C Internet Information Server )。

     

    下面对常见的WEB服务器进行简单介绍,后续对其中一些主要的服务器进行实际环境搭建。

     

    1.  Apache服务器

     

        Apache仍然是世界上用得最多的Web服务器,市场占有率达60%左右。它源于NCSAhttpd服务器,在NCSA WWW服务器项目停止后,那些使用NCSA WWW服务器的人们开始交换用于此服务器的补丁,这也是Apache名称的由来(pache补丁)。世界上很多著名的网站都是Apache的用户,它的优势主要在于源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix, Windows. Linux系统平台上),以及其可移植性等。Apache的模块支持非常丰富,虽在速度、性能上不及其他轻量级W eb服务器,但是属于重量级产品,所消耗的内存也比其他Web服务器要高。

    官方网站:http://httpd.apache.org/

     

    2.  Nginx服务器

     

    Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

    Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,是目前市面上唯一能和kangleweb server比拼的web server,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、腾讯等。

     

    官方网站:http://nginx.org/

     

    3.  Tomcat服务器

     

        Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的W eb应用软件容器。Tomcat Server是根据servlet和JSP规范执行的,因此也可以说Tomcat Server实行了Apache-Jakarta规范,且比绝大多数商业应用软件服务器要好。但是,Tomcat对静态文件、高并发的处理比较弱。

    官方网站:http://tomcat.apache.org

     

     

    4.  Lighttpd服务器

     

       Lighttpd是由一个德国人写的开源软件,其目标是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的Web  Server环境。它具有内存开销低、CPU占用率低、效能好,以及模块丰富等特点。支持FastCGI、CGI. Auth、输出压缩(output compress )、URL重写及Alias等重要功能。Lighttpd跟Nginx一样,也是一款轻量级Web服务器,是Nginx的竞争对手之一。

        官方网站:http://www.lighttpd.net/

     

     

    5.  Microsoft IIS 服务器


        Microsoft的W eb服务器产品为Internet Information Server C IIS ) .  IIS是允许在公共Intranet或Internet上发布信息的Web服务器。它是目前最流行的Web服务器产品,很多著名的网站都是建立在IIS平台上的。IIS提供了一个图形界面的管理工具,称为Internet服务管理器,可用于监视配置和控制Internet服务。

       IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI ( Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。

        IIS只能运行在Microsoft Windows平台、LinuxNnix平台上,因此须要购买商业的Windows Server操作系统。

    演示网站:http://www.yangyufei.com

     

     

    6.  IBM WebSphere服务器

     

        WebSphere Application Server是一种T}}能完善、开放的Web应用程序服务器,是IBM电子商务计}}J的核心部分,它基于Java的应用环境,建立、部署和管理Internet和Intranet Web应用程序。这一整套产品目前己进行了扩展,以适应Web应用程序服务器的需要,范围从简单到高级,直到企业级。据IBM官方网站介绍,有10 000多个企业正在使用IBM WebSphere,相对于其他流行的Web服务器而言,应用的数量很少。

     

    官方网站:http://www.ibm.com/developerworks/cn/websphere

     

    7.  Oracle Weblogic服务器

    WebLogic是美商Oracle的主要产品之一,系并购得来。是商业市场上主要的Java(J2EE)应用服务器软件(applicationserver)之一,是世界上第一个成功商业化的J2EE应用服务器, 已推出到12c(12.1.1) 版。而此产品也延伸出WebLogic Portal, WebLogic Integration等企业用的中间件(但当下Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业包),以及OEPE(Oracle Enterprise Pack for Eclipse)开发工具。

    WebLogic最早由 WebLogic Inc. 开发,后并入BEA 公司,最终BEA公司又并入 Oracle公司。

    webserver是用来构建网站的必要软件。可用来解析、发布网页等功能,它是用纯java开发的。weblogic本来不是由bea发明的,是它从别人手中买过来,然后再加工扩展。BEA已经被Oracle收购,目前Weblogic最新版本为Oracle Weblogic Server 12c(12.1.1)。其他J2EE Application Server还有IBMwebsphereSun(Sun公司已经被ORACLE公司收购)Glassfishresin等。Apache Tomcat也是常用的Servlet/JSP Container国内厂商生产的还有像中创软件的Loong AS 9.0(达四级等保,全面支持国产)、东方通的Tongweb金蝶Apusic应用服务器等。

    BEA WebLogicServer拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性。

    BEA WebLogic Commerce ServerTM配合使用,BEA WebLogic Server可为部署适应性个性化电子商务应用系统提供完善的解决方案。

    WebLogic长期以来一直被认为是市场上最好的J2EE工具之一。像数据库或邮件服务器一样,WebLogic Server 对于客户是不可见的,为连接在它上面的客户提供服务。WebLogic 最常用的使用方式是为在internet intranet 上的Web 服务提供安全、数据驱动的应用程序WebLogicJ2EE 架构的支持:WebLogic Server 提供了对SUN J2EE 架构的支持。SUN公司的J2EE 架构是为企业级提供的一种支持分布式应用的整体框架。为集成后端系统,如ERP系统CRM系统,以及为实现企业级计算提供了一个简易的,开放的标准。

    官方网站:http://www.oracle.com/us/corporate/acquisitions/bea/index.html

     

    8.  Boa服务器


    BOA 服务器是一个小巧高效的web服务器,是一个运行于unixlinux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。由于它是一个单任务的Web服务器,只能一次完成用户的请求,而不会fork出新的进程来处理并发的链接请求。但是Boa支持Cgi,能够为Cgi程序fork出一个进程来执行相应的客户请求。

     

    官方网站:http://www.boa.org/

      

    9.  W3C  Jigsaw服务器



    Jigsaw是W3C推出的开源的Web服务器平台,使用Java语言编写,可以安装在有Java运行环境的系统上。做为W3C(World WideWeb Consortium)开发的服务器产品,其作用主要是对新技术的实现做一个示例,而非全功能的商业服务器产品。

    不过就Jigsaw 2.0版本而言,它的功能还是超过了目前Web服务器的平均水平。最重要的是,它体现了未来HTTP协议和基于对象的Web服务器技术的发展。如果你希望你的平台支持所有下一代技术,Jigsaw是一个好的选择。

     

    官方网站:http://www.w3.org/Jigsaw/


    展开全文
  • Web服务器工作原理详解(基础篇)

    万次阅读 多人点赞 2018-08-14 17:12:00
    概述:Web服务器概念较为广泛,我们最常说的Web服务器指的是网站服务器,它是建立在Internet之上并且驻留在某种计算机上的程序。Web服务器可以向Web客户端(如浏览器)提供文档或其他服务,只要是遵循HTTP协议而设计的...

    概述:Web服务器概念较为广泛,我们最常说的Web服务器指的是网站服务器,它是建立在Internet之上并且驻留在某种计算机上的程序。Web服务器可以向Web客户端(如浏览器)提供文档或其他服务,只要是遵循HTTP协议而设计的网络应用程序都可以是Web客户端。

    Web服务器和HTTP服务器可以说是同一个东西,当然非得细分的话,HTTP服务器是建立在HTTP协议之上的提供文档浏览的服务器,更多的是提供静态的文件。而Web服务器涵盖了HTTP服务器(这一点可以自行百度百科), Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。
    Web服务器 约等于 HTTP服务器 + 其他服务

    目前所熟知的Web服务器有很多,其最主流的是 Apache, Nginx, IIS
    各大Web服务器的实现细节都不同,是为了某种情形而设计开发的。但是它们的基础工作原理是相同的,这也是本次基础篇所讲解的内容。

    一、Web服务器工作原理图解

    这里写图片描述
    首先我们暂时不考虑HTTP协议的各种请求方式,我们先跟着**(Web服务器工作原理总体描述01)这张图,将一次Web服务的工作流程过一遍,我们假设以浏览器作为客户端
    (1) 用户做出了一个操作,可以是填写网址敲回车,可以是点击链接,可以是点击按键等,接着浏览器获取了该事件。
    (2) 浏览器与对端服务程序建立TCP连接。
    (3) 浏览器将用户的事件
    按照HTTP协议格式**打包成一个数据包,其实质就是在待发送缓冲区中的一段有着HTTP协议格式的字节流。
    (4) 浏览器确认对端可写,并将该数据包推入Internet,该包经过网络最终递交到对端服务程序。
    (5) 服务端程序拿到该数据包后,同样以HTTP协议格式解包,然后解析客户端的意图。
    (6) 得知客户端意图后,进行分类处理,或是提供某种文件、或是处理数据。
    (7) 将结果装入缓冲区,或是HTML文件、或是一张图片等。
    (8) 按照HTTP协议格式将(7)中的数据打包
    (9) 服务器确认对端可写,并将该数据包推入Internet,该包经过网络最终递交到客户端。
    (10) 浏览器拿到包后,以HTTP协议格式解包,然后解析数据,假设是HTML文件。
    (11) 浏览器将HTML文件展示在页面
    以上为Web服务器工作基本原理。其实不难发现,这仅仅只是一个简单的网络通信。我们应该深信,作为一个服务器,其根本的工作无非有三个

    1. 接收数据 2. 发送数据 3. 数据处理
      而Web服务器的本质就是 接收数据 ⇒ HTTP解析 ⇒ 逻辑处理 ⇒ HTTP封包 ⇒ 发送数据
      高级的服务器无非就是将这三个部分更加细致的设计了。

    二、Web服务器之提供静态文件工作原理图解

    Web服务器最主要的功能是提供静态的文件。日常的上网浏览大多是网页浏览,少数时候才会有一些数据的提交操作。因此,我们结合上一张图示来重点讲解在GET请求下的Web服务器工作原理。
    这里写图片描述
    其他流程基本不变,着重在于红色与蓝色部分。
    (1) 当用户点击一个网页链接或浏览器加载一些资源(css,jpg …)时产生。
    (6) 服务程序解包后,确定其为GET请求,并且是对该服务器上的某一资源的请求。首先服务程序会去确认该路径是否存在,再确定该路径的文件是否可以获取。
    (7-1) 如果请求的路径有误,或者该资源不能被用户获取,则返回错误提示页面。很多服务器的错误页面只有404,更专业的应该是将错误分类并返回对应的错误代码页面。
    (7-2) 如果该路径合法且文件可以被获取,那么服务程序将根据该文件类型进行不同的装载过程,记录其类型作为(8)中HTTP协议中对应的返回类型,并加入响应头。

    假设以点击一个页面链接为例,浏览器首先将HTML文件请求过来,再以同样的流程对HTML文件中包含的资源文件路径进行依次请求。
    这里写图片描述

    三、Web服务器之数据提交工作原理图解

    仅仅只是网页的浏览并不能满足所有人的需求,客户端与服务器应当是有数据交互的。
    即使单方面的资源请求任然是网络的主力军。
    我们应该清楚的知道,数据提交对于用户来说有什么作用。
    (1) 资源上传 (2) 登陆验证 (3) API接口调用 (4) 远程指令等
    数据提交使得用户的操作性有了质的飞跃,它使得HTTP短连接获取静态文件的方式提升到了动态交互的层次上。该性质也催化出各式各样的编程语言、框架。例如PHP,JavaWeb。
    如果你留意目前主流的那些大型服务器,你会发现再高级再牛逼的东西实际是也是最基础的东西建造的。那么我们还可以顺便学习一下最古老的动态技术CGI
    这里写图片描述
    其他流程基本不变,着重在于红色与蓝色部分。
    (1) 用户提交数据,假设用户点击一个按键提交填好的信息。在(3)中将以POST格式写入,并填入提交至服务端的可执行程序的路径。
    (6) 服务端将参数与该CGI绑定,复制进程,用管道传递参数和接收结果
    (7) 子进程执行CGI,接收(6)父进程传来的参数,运算完成返回结果。
    最后父进程将结果装入静态模板文件,放入缓冲区

    四、动态技术

    我们得明白,Web服务器是以短连接为主,并且获取的数据到达浏览器的那一刻一定是静态的不变的。那么所谓动态实际是指两种情况

    1. 服务端产生
      (1) 用户POST提交数据到某个程序,程序根据该数据作为参数运行,得出结果并装入静态的模板页面中,返回该静态页面。但对于用户来说,同一个页面,做了一个操作后数据不一样了。好了,这就是动态页面。(CGI原理)
      (2) PHP的原理是,用户GET请求一个php后缀的文件,服务器先执行该php后缀文件中的PHP代码,将结果填入代码的位置,再返回。当然也可以提交数据参与运算再返回。
    2. 客户端产生
      (1) 用户GET请求一个JavaScript文件,服务端不做任何运算返回该静态文件。浏览器收到该JS文件,在本地执行并更新页面。
      (2) 用户POST提交数据到服务端,服务端根据该提交的数据指令返回静态文件,浏览器收到后执行并更新。
    展开全文
  • 搭建web服务器

    万次阅读 2018-06-18 07:38:54
    在本地pc上搭建web服务器,利用路由器,将本地pc和手机通过无线局域网组成局域网,本地ip为192.168.0.106,手机ip为192.168.101,win+r---->在cmd命令行窗口输入:ping 192.168.0.101.检查电脑和手机是否能...

    在本地pc上搭建web服务器,利用路由器,将本地pc和手机通过无线局域网组成局域网,本地ip为192.168.0.106,手机ip为192.168.101,win+r---->在cmd命令行窗口输入:ping 192.168.0.101.检查电脑和手机是否能ping通,如何能ping通,则进行下步操作,ping不通就检查网络与网卡的问题。

    下面就是如何搭建web服务器了,window其实自带了web服务器与客户端,挺好用,为了简单考虑,我直接使用window自带的IIS来搭建web服务器,首先默认情况下,IIS是没有开启的,比如telnet客户端也一样。我们先将起开启。

    -->控制面板----->程序

    ---打开或关闭window功能


    ---internet信息服务---web管理工具勾选



    现在已经完成第一步,相当于你安装了这个软件,下面就是在这个软件上搭环境

    运行这个软件,进来的界面是这样的


    搭建步骤: 

    注意: 这里就是搭建web服务器的路径,它的权限必须可读可写,我就建立在E:\test. 如果这个目录放在桌面是成功不了的。

    编写一个简单的html文件,该文件的文件格式必须是.htm 或.html,将该文件加入默认文档中,按优先级排序


    绑定ip和端口号

    最后就是启动web服务器,这里一定要留意,我们的端口设置成8080,不要设置成80,一般web服务器都设置成80,我们避免冲突,还有我们这里主要是访问我们制作的h5页面,但是如果是上传下载的话,就对格式没有多大要求,但必须将其类型加到MIME类型中去


    现在就在手机浏览器中输入192.168.0.106即可。浏览器返回的结果为


    这就是在本地搭建web服务器,利用手机浏览区访问的过程。此时手机和本地其实是在同一局域网,不存在服务器和客户端的关系,是对等关系,其实还可以搭建一种真正意义上的服务器和客户端。那就要借助广域网。这个我会在后面的文章中写到。

    总结一下:向服务器搭建,其实就是一下几点: ip-->port-->dir  说白了就是能让客户端在于服务器建立三次握手之后就可以找到服务器上的文件,实现访问。

    展开全文
  • 基于HTTP实现的小型web服务器

    千次阅读 2018-09-12 22:26:09
    主要流程为:服务器获得请求–>响应并处理请求–>返回结果。 完整的HTTP过渡到TCP实现客户端与服务器的交互过程 1.当客户端执行网络请求的时候,从url中解析出url的主机名,并将主机地址转换成ip 2....

    主要流程为:服务器获得请求–>响应并处理请求–>返回结果。

    完整的HTTP过渡到TCP实现客户端与服务器的交互过程
    1.当客户端执行网络请求的时候,从url中解析出url的主机名,并将主机地址转换成ip
    2.从url解析出服务器的所用端口号
    3.客户端用TCP连接服务器
    4.连接成功后 获取输出流,将数据以报文的形式传递给服务器
    5.当服务器接收到数据之后,进行判断和解析码,并回应一条响应报文
    6.客户端从输入流中获取报文,然后进行解析
    7.关闭网络连接

    HTTP的特点


    1、支持客户端/服务器的模式
    2、简单快捷 客户向服务器发送请求服务时,只需要传送请求方法和路径,每种方法规定了客户与服务器联系的类型的不同,由于HTTP协议简单,使得HTTP服务器的规模小,因此通信速度很快.
    3、灵活  允许传送各种类型的数据,数据类型用Content-Type标记
    4、无连接:限制每次连接只处理一个请求,服务器处理完客户的请求,收到客户的应答后,随即断开连接,这种方式节省传输时间,请求应答机制会断开
    5、无状态  HTTP协议是无状态的协议,即对事务处理没有记忆功能

    关于URL


    即统一资源定位符,每个网页都对应一个URL地址(俗称网址),具有全球唯一性。它包含的信息指出文件的位置以及浏览器应该怎么处理它。 一个完整的URL包括协议类型、主机类型、路径和文件名。 
    http协议的URL格式: http: //host[:port][abs_path] ,http表示使用http协议来进行资源定位;host是主机域名;port是端口号,一般有默认的;abs_path代表资源的路径。 
    这里我主要介绍项目中涉及的URL的两种格式—URL带参数和不带参数的。

    HTTP的请求与响应格式


    响应报头中的状态码和状态码描述,例如:当请求的资源不存在时,会收到“404 NotFound”的页面,404就是状态码,“NotFound”就是状态码描述,即请求的文件不存在。

    1.实现支持GET和POST方法的小型http服务器
    GET方法:如果GET方法只是简单的请求一份资源,而不传递参数的话则由服务器直接将资源返回即可。如果GET方法的url中带有参数的话,则就要使用CGI模式进行处理。 
    POST方法:POST方法要使用CGI模式进行处理,POST的参数在消息中文中出现。
    使用GET方法使用的是带参数的url,传递的参数会使用?连接在资源后面POST方法使用的是不带参数的url 它的参数是通过http请求正文传递给服务器的,http的请求和响应模式


    响应报头中的状态码和状态码描述,举个例子,当请求的资源不存在的时,会收到"404 NotFound"的页面,404就是状态码,

    "NotFound"就是状态码描述,既请求的文件不存在

    状态码表示响应类型

    1×× 保留

    2×× 表示请求成功地接收

    3×× 为完成请求客户需进一步细化请求

    4×× 客户错误

    5×× 服务器错误 

    响应头的信息包括:服务程序名,通知客户请求的URL需要认证,请求的资源何时能使用

     

    HTTP服务器实现框架


    1.面向链接:http协议是基于TCP通信协议,因此实现web服务器的第一步至少要能实现两个主机不同进程之间的TCP通信,并且需要解决高并发问题所以这里推荐使用多线程服务器来构建,每次创建出来一个新线程出来的时候将线程分离,然后让这个新线程去处理这个请求.
    2.分析出请求行: 当服务器接收到请求后,首先知道的是HTTP服务器版本号,和请求方法。web服务器是要支持cgi模式: 请求的方法不同,cgi可能也不同,我们实现的知识比较简单单的处理GET和POST方法
    3.判断cgi模式
    //    1)当我们判断出来是GET请求时候,并且url中没有参数的话,就用非CGI模式,非CGI模式处理//起来比较简单,首先解析出来请求路径,判断是不是合法资源,如果是就直接返回这个资源。
    //    2)当是CGI模式处理请求的时候,我们要fork一个子进程,对子进程exec替换CGI程序,这个
    //过程中使用pipe进行父子进程之间的通信。所有需要的参数在exec之前,都将这些参数导出为环境变//量,就算exec的话,子进程还是能够通过环境变量获取所需的参数。
    4.响应客户端:此时我们已经知道了方法以及是否为cgi模式,然后开始读取URL,这里有一个细节非cgi模式 请求参数会跟在url当中,如果cgi模式的话,参数在消息正文中,然后我们读取到路径,判断路径当中资源是否存在,如果存在判断这个资源是一个目录,普通文件还是一个可执行程序

    这里分情况分析
        1)如果是cgi模式,直接进入cgi内部运行;只要是POST方法就需要支持cgi,直接进入cgi函数内部运行.
        2)如果是非cgi模式时一定是GET方法并且没有参数,此时进入wwwroot()函数内部即可,该函数会将所请求的资源以html的格式返回给浏览器.

     

    接下来是解释运行cgi模式,首先服务器要从浏览器读取参数,然后创建出来一个子进程去执行cgi部分的可执行资源,父进程通过环境变量的方式传递给子进程,子进程运行完成之后呢,将结果交给父进程,父进程再将数据输出给浏览器. 所以父进程在这个例子当中就向是一个中介,只进行参数和结果的转交实际上并不会执行任何资源,因此将子进程的输入输出文件描述符重定向,就可以让子进程直接与浏览器"联系".



    父进程做的事情

    1. 1.创建两个管道,并关闭相应的文件描述符 
    2. 2.POST方法:继续读取数据,直到读完POST的参数部分GET方法:直接从子进程读取结果
    3. 3.将数据和方法全部交给子进程后等待子进程的结果

    子进程做的事情

    1. 1.关闭管道适当的文件描述符
    2. 2.对标准输入输出进行重定向
    3. 3.通过环境变量传递参数
    4. 4.进行exec程序替换

     

    一次完整的http请求的流程

    项目文件

    目录: 
    python:爬取小说和招聘信息的代码

    sql_connect:存放mysql需要的lib库   连接mysql程序文件
    wwwroot:web服务器工作的根目录,包含各种资源页面(例如默认的index.html页面,差错处理的404页面),以及执行cgi的可执行程序

    文件: 

    makefile:编译整个项目
    httpd.h:服务器的方法声明 
    httpd.c:方法实现 
    main.c:服务器的主逻辑

     

    数据库中的操作
    没有索引的时候会进行整个表的扫描
    添加索引 索引会形成一颗二叉树  利用二分查找的方法。

    遇到的问题:
    1.运行cgi后不能显示在页面上,便尝试着写一个简单的CGI程序看自己的CGI是否真的能跑完,结果CGI没有问题,后来尝试用telnet工具模拟一次http,看看是否真的收到了网页回复,后来分析结果,对比之后发现返回的东西不能显示,之后给html加了一些p标签,便可以显示出来。
    2. 经常会出现类似于:undefined reference to `sql_connecter::~sql_connecter()'的问题,文件编译的路径不对。
    3.调用数据库的数据显示到html文件中出现乱码的问题,最初以为自己编码格式有问题,后来发现是数据库编码格式和浏览器的编码格式不一样,数据库使用utf8编码方式,浏览器是GB2312,后来浏览器使用utf8编码格式,能够正常显示。

    4.代码中会需要int *和 void*的转换,用到C++强制转换形如  int*  data = reinterpret_cast<int*>(arg);

    5.本地环回测试ok,Linux下的浏览器测试也可以,但不能接外部的浏览器访问(没有设置桥接模式) 在外部浏览器测试的话千万别忘记关闭防火墙 

    6.运行程序时会提醒挺行下载页面,因为在响应报头有问题中。而浏览器对于不能识别或解析的实体,都会提醒用户下载。

    展开全文
  • 三大web服务器比较

    千次阅读 2017-07-25 21:28:26
    lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。 Lighttpd使用fastcgi方式运行php,它会使用
  • HTTP的WEB服务器做了些什么?

    千次阅读 2018-11-10 09:56:19
    Web服务器的实现 Web 服务器实现了 HTTP 和相关的 TCP 连接处理。 负责管理 Web 服务器提供的资 源, 以及对 Web 服务器的配置、 控制及扩展方面的管理。 Web 服务器逻辑实现了 HTTP 协议、 管理着 Web 资源, 并...
  • web 服务器有哪些

    万次阅读 2018-08-27 16:53:49
    什么是web服务器 "网络服务"(Web Service)的本质,就是通过网络调用其他网站的资源。 Web Service架构和云 如果一个软件的主要部分采用了"网络服务",即它把存储或计算环节"外包"...
  • Web服务器工作原理

    2019-12-14 09:16:01
    Web服务器工作原理概述 很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http请求的?它们在幕后做了什么动作?Java Servlet API(例如ServletContext,...
  • 常用的WEB服务器简介

    万次阅读 2018-06-22 10:55:57
    常用的WEB服务器 WEB服务器也称为WWW服务器、HTTP服务器,其主要功能是提供网上信息浏览服务。Unix和Linux平台下常用的服务器有Apache、Nginx、Lighttpd、Tomcat、IBM WebSphere等,其中应用最广泛的是Apache。而...
  • 一、什么是WEB服务器  Web服务器可以解析HTTP协议。当Web服务器接收到一个HTTP请求,会返回一个HTTP响应,例如送回一个HTML页面。为了处理一个请求Web服务器可以响应一个静态页面或图片,进行页面跳转或者把动态响应...
  • Web服务器配置

    千次阅读 2018-04-28 12:45:07
    课程名称服务器配置与管理实验成绩 实验名称Web服务器配置学号 姓名;指导老师-龚蕾 班级 日期 实验目的:1.掌握liunx系统的基本命令2 掌握Web服务器配置的基本原理3.掌握Apache服务器的安装与配制方法和客户端...
  • Win10 IIS Web服务器安装与配置

    万次阅读 多人点赞 2018-01-04 21:53:00
    这几天课程实训,使用 IIS 配置服务器,课本上内容太久,老师也没有讲过,自己摸索了一下,所以记录一下 安装 IIS 打开程序和功能,选择左边启用或关闭 Windows 功能,建议根据下图勾选,确定后等待安装完成 打开 ...
  • Web服务器配置与管理

    千次阅读 2015-12-27 19:24:00
    Web 服务器配置与管理 一.目的:  主要目的是学习网络服务器配置,包括IIS 配置方法、 Apache 配置 ... (3)制作简单网页验证Web服务器配置情况。 三.环境:  (1)WindowsXP/Windows Server 2003  
  • Mac OS下Web服务器配置

    千次阅读 2016-06-02 10:29:43
    Apache(Web)服务器 PHP支持 MySQL数据库 命令行会让你的Mac飞起来! 通过命令行直接可以使用诸如:C、C++、Python、Ruby、PHP、JavaScript、Perl等语言进行开发,Mac是程序员开发的利器,除了微软平台的程序员,...
  • window10 Web服务器配置IIS的环境搭建

    万次阅读 多人点赞 2018-06-01 18:00:13
    自己是做前端开发的,服务器又不回搭,这样测试很不方便,之前都是别人给我搭建服务器的,可每次也不能找人帮忙,自己动手丰衣足食嘛,于是自己查资料在结合自己的搭建的web服务器跟大家展示一下,希望帮到不怎么...
  • ▶ 网络拓扑及配置 ▶ PC访问测试
  • 关于web服务器硬件配置

    千次阅读 2018-02-02 11:50:14
    在前几天Fish写了一篇“如果拥有一台属于自己的WEB服务器,你如何配置”的博文,上面说的是WEB服务器系统以及软件方面的配置,今天就...本博就针对一些经典的WEB服务器配置作解说吧: web服务器是一个性能追求型
  • 新建.net的web网站时,有时会出现“无法在web服务器上启动调试,web服务器配置不正确”的对话框提示,对于此问题的原因及解决办法是: 原因:IIS和Vs安装顺序错误,先安装Vs,在安装IIS都会出现一些问题,这个...
  • 尝试利用win2008 server作为web服务器进行配置~~ 一、实验环境 操作系统:win2008 server 二、配置ip,安装IIS,DNS 三、添加网站 打开IIS,在网站列表中添加指定网站,这里指定加入自己编辑的HTML,并修改网站名...
  • 系统换成Windows10安装VS2012打开项目总提示:vs2012 aps.net 4.5尚未在web服务器上注册,您需要手动将Web服务器配置为使用ASP.NET 4.5,这样您的网站才可能正确运行,很是扯淡~ 解决方法: 下载微软补丁: ...
  •  首先呢就是虚拟机的相关配置,这个就不说了,当我们安装完系统后,打开终端,输入命令“rpm -q httpd”,因为linux9.0已经安装了Apache服务,所以此时窗口会显示安装的版本信息,这就说明系统已成功安装Apache服务...
  • linux下web服务器配置(一)

    千次阅读 2010-04-12 18:38:00
    如果你想通过主页向世界介绍自己或自己的公司,就必须将主页放在一个WEB上,当然你可以使用一些免费的主页空间来发布。但是如果你有条件,你可以注册一个域名,申请一个IP地址,然后让你的ISP将这个IP地址解析到你的...
  • 打一个vs2012的补丁 ...
  • 如何将 Nginx 配置Web服务器

    万次阅读 2016-12-28 10:01:19
    抽象来说,将 Nginx 配置Web 服务器就是定义处理哪些 URLS 和如何处理这些URLS 对应的请求。具体来说,就是定义一些虚拟服务器(Virtual Servers),控制具有特定 IP 和域名的请求。 更具体的来说, ...
  • linux系统下web服务器配置

    千次阅读 2019-05-20 17:12:11
    配置步骤及源码 绑定IP地址。为Apache服务器网卡绑定两个IP地址,分别是eth0:1 192.168.91.21和eth0:2 192.168.91.22:通过复制的方式复制ifcfg-eth0为ifcfg-eth0:1和ifcfg-eth0:2 ifcfg-eth0内容不作改变 ifcfg-...
  • 一、安装WEB服务器 1.选择添加角色和功能 2.一直下一步到选择web服务器 3.添加功能 4.角色服务可以按需选择,这里直接默认 5.一直下一步,耐心等待安装成功 二、配置IIS 1.安装成功后右键IIS就可以...
  • web服务器学习体会

    千次阅读 2016-12-01 15:10:56
    web服务器其实就是一个应答器,他可以按照预先程序的设计响应客户端浏览器的所有问题。在这个响应的过程中,在网络上使用的是http协议,当然为了安全性后来出现了https协议,而传输的内容时符合HTML标准的文档。当前...
  • 访问IIS元数据库失败思考可能是次序出了问题,解决1、打开CMD,进入 C:/WINDOWS/Microsoft.NET/Framework/v2.0.507272、输入 aspnet_regiis.exe -i稍等片刻,注册成功就解决问题了。 接着还会出现“未能创建 Mutex...
  • 在Microsoft Visual Studio 2012中打开ASP.NET MVC项目时,出现以下错误。 注:以下内容部分转自该博主原创博文(http://blog.csdn.net/jasonhds/) 解决方法: 下载微软补丁: ...
  • 为了使网站正确运行,可能需要手动将 Web 服务器配置为使用 ASP.NET 4.0,按 F1 可了解更多详细信息。” 查阅百度后知道出现这个错误是因为IIS 7 采用了更安全的Web.Config管理机制,默认情况下会锁住配置项不允许...

空空如也

1 2 3 4 5 ... 20
收藏数 1,648,196
精华内容 659,278
关键字:

web服务器