经过几十年的发展,已经出现几个成熟的处理HTTP的知名的Web服务器。这些服务器可以解析(handle)HTTP,当Web服务器接收到一个HTTP请求时,会根据配置的内容返回一个静态HTML页面或者调用某些代码动态生成返回结果。Web服务器把动态响应(dynamic response)产生的委托(delegate)给其他一些程序,例如 Python代码、JSP(JavaServer Pages)脚本、Servlets、ASP(Active Server Pages)脚本等。无论它们的目的如何,这些服务器端(server-side)的程序通常会产生一个HTTP响应让浏览器浏览。

  由于目标操作系统、应用场景及商业目的的不同,当今主流的Web服务器各具特色,将它们的特性简单的概括如下:

// Apache : 是世界上用的最多的Web服务器,市场占有率达60%左右。由于其卓越的性能,Tomcat 或 JBoss 等很多其他Web服务器使用Apache为自己提供HTTP接口服务。
// Nignx : 是一款轻量级、高性能的 HTTP 和 反向代理服务器。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
// IIS : 微软的 Web 服务器产品。由于 Windows的影响,IIS 是目前最流行的Web服务器产品之一,它的最大优势当然是对微软 ASP.net 及其周边产品的支持。
// Tomcat : 是一个开源服务器,是 Java Servlet 2.2 和 JavaServer Pages 1.1 技术的标准实现。
// JBoss : 是一个管理 EJB 的容器和服务器,支持 EJB 1.1、EJB 2.0 和 EJB 3 的规范。但JBoss 的核心服务不包括支持 Servlet、JSP 的Web容器,一般与 Tomcat 或 Jetty 绑定使用。

  当前的主流 Web 服务器都实现了主流语言的可调用接口规范,这些标准如下:

# CGI :Common Gateway Interface,CGI 规范允许 Web 服务器执行外部程序,并将它们的输出发送给 Web 浏览器,CGI 将Web的一组简单的静态超媒体文档变成一个完整的交互式媒体。
# ISAPI :Internet Server Application Program Interface, 是微软提供的一套面向Web服务的API接口,它能实现CGI提供的全部功能,并在此基础上进行了扩展,例如提供了过滤器应用程序的接口。
# WSGI : Web Server Gateway Interface, 是一套专门为 Python 语言制定的网络服务器标准接口。

  从客户端浏览器的角度看,他的每次访问是通过 HTTP 访问 Web 服务器从而获得某种服务(下载文件、查看页面、订购商品等)的,但实际上Web服务器仅起到桥梁的作用,即将浏览器的HTTP请求解码,转换成服务器端程序能够识别的接口调用方式,然后将服务器端程序生成的返回封装成HTTP Response,并返回给浏览器。服务器端程序、Web服务器、客户端之间的关系如下图所示:

  

  最简单的服务器端程序可以是直接读取某文件或返回固定的网页内容;稍复杂一些的服务器端程序需要处理客户端通过 HTTP、URL、HTML 中传入的参数、动态执行逻辑代码、在数据库或缓存中读写数据等一系列操作,才能最终生成调用结果。

Web服务器 --> 基于HTTP的网站开发的更多相关文章

  1. linux web服务器及LAMP动态网站平台搭建

    (vim补:)vim另存为:x,x w 目标文件路径vim批量删除x:x,x d Web服务:基于B/S架构的web通信服务端:支持HTTP协议的网页提供程序客户端:按标记规范显示网页的浏览器程序客户 ...

  2. 手机版WEB开发经验分享,手机版网站开发注意事项,网站自适应,手机版网站自适应,移动安卓APP自适应

    转自 http://my.oschina.net/cart/blog/282477 做前端开发不短了,用过jQuery Mobile jqMobi 也纯手工写过.. 最后总结如下: jQuery Mo ...

  3. Linux下嵌入式Web服务器BOA和CGI编程开发

    **目录**一.环境搭建二.相关配置(部分)三.调试运行四.测试源码参考五.常见错误六.扩展(CCGI,SQLite) # 一.环境搭建操作系统:Ubuntu12.04 LTSboa下载地址(但是我找 ...

  4. 基于django的网站开发一基础项目配置

    首先确认电脑上已经安装好了python和django,我的python版本是2.7.13,django版本是1.10.2.数据库我使用的是mysql,版本是5.7.17,我是windows7系统,用的 ...

  5. 使用Python开发轻量级的Web框架以及基于WSGI的服务器来实现一个网站页面

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 目录 一丶项目说明 二丶数据准备 三丶使用网络TCP开发一个基于WSGI协议的Web服务器 四丶使用python3开发一个轻量级的 ...

  6. Visual Studio中用于ASP.NET Web项目的Web服务器

    当您在 Visual Studio 中开发 Web 项目时,需要 Web 服务器才能测试或运行它们. 利用 Visual Studio,您可以使用不同的 Web 服务器进行测试,包括 IIS Expr ...

  7. Web服务器与Web系统发布

    在讨论Web系统发布之前,我们先来辨析两个概念:服务器.Web服务器. 通常,我们说的服务器,是一台提供服务的计算机,是硬件概念.这台主机有其IP地址,有服务端口,我们要访问时,就是通过IP地址唯一地 ...

  8. java web服务器tomcat介绍【转载】

    机器矩阵2016-08-10 22:14 java程序员亲切地称他为tom猫,看到这只猫可以说明1 服务器部署成功了 ,2 网络是联通的. 到底这只猫是什么来头呢? tomcat是Apache基金会下 ...

  9. WEB服务器如何选择 Apache or Nginx?

    Web服务器是直接影响网站性能的关键因素,也是每个站长选择网站运营环境时必然考虑的问题.目前Web服务器市场产品众多,最为主流和代表性的当属Apache.Nginx以及微软的IIS.本文目的是通过Ap ...

随机推荐

  1. Python之将Python字符串生成PDF

      笔者在今天的工作中,遇到了一个需求,那就是如何将Python字符串生成PDF.比如,需要把Python字符串'这是测试文件'生成为PDF, 该PDF中含有文字'这是测试文件'.   经过一番检索, ...

  2. P5346 【XR-1】柯南家族

    题目地址:P5346 [XR-1]柯南家族 Q:官方题解会咕么? A:不会!(大雾 题解环节 首先,我们假设已经求出了 \(n\) 个人聪明程度的排名. \(op = 1\) 是可以 \(O(1)\) ...

  3. PHP命名大小写敏感规则

    一直觉得PHP中各种大小写规则理不清,就连工作多年的老手们也不一定能对PHP大小写敏感问题足够了解.在PHP中,大小写敏感问题的处理比较乱,大家一定要注意.即使某些地方大小写不敏感,但在编程过程中能始 ...

  4. HDU-1269-迷宫城堡(强连通 模板)

    链接:https://vjudge.net/problem/HDU-1269 题意: 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M< ...

  5. PHPstudy安装redis扩展

    PHPstudy安装redis扩展 第一步:查看PHP版本(phpinfo) 第二步:下载所需的扩展(http://pecl.php.net/package/redis   .   http://wi ...

  6. Java Excel API的使用

    https://wenku.baidu.com/view/724cc9e2dd88d0d232d46a1b.html

  7. GPIO的翻转操作方法

    STM32在进行IO翻转操作的时候可以使用以下方法:以PE.5为例 GPIO_WriteBit(GPIOE,GPIO_Pin_5,(BitAction)(1-(GPIO_ReadOutputDataB ...

  8. HDU 1029 一道微软面试题

    http://acm.hdu.edu.cn/showproblem.php?pid=1029 给定一个数组,其中有一个相同的数字是出现了大于等于(n + 1) / 2次的.要求找出来. 1.明显排序后 ...

  9. 字节码技术---------动态代理,lombok插件底层原理。类加载器

    字节码技术应用场景 AOP技术.Lombok去除重复代码插件.动态修改class文件等 字节技术优势  Java字节码增强指的是在Java字节码生成之后,对其进行修改,增强其功能,这种方式相当于对应用 ...

  10. java lombok包在maven已经配置,但是注解没用

    如果你是用eclipse作为开发环境,配置了maven依赖以后,还需要在eclipse/myeclipse中手动安装lombok. 其实就是加一个jar包,添加2行代码 1. 将 lombok.jar ...