Web服务器概念:

实现了HTTP和相关的TCP连接处理,负责管理Web服务器提供的资源,以及对Web服务器的配置、控制及扩展方面的管理。

各种不同的形式:

  1. 通过软件Web服务器:运行在标准的、有网络功能的的计算机系统上,如:Apache, Nginx, IIS
  2. Web服务器设备:预先打包好的软硬件解决方案。
  3. 嵌入式Web服务器:嵌入到消费类产品(比如打印机)中去的小型Web服务器。

Web服务器会做哪些工作:

  1. 建立连接。接受一个客户端连接,或者如果不希望与这个客户端建立连接,就将其关闭;
  2. 接受请求。从网络中读取一条HTTP请求报文;
  3. 处理请求。对请求报文进行解释,并采取行动;
  4. 访问资源。访问报文中指定的资源;
  5. 构建响应。创建带有正确首部的HTTP响应报文;
  6. 发送响应。将响应回送给客户端;
  7. 记录事务处理过程。将已完成事务有关内容记录在一个日志文件中;

不同的Web服务器结构会以不同的方式为请求服务:

  1. 单线程Web服务器:一次只处理一个请求,直到其完成为止;
  2. 多进程及多线程Web服务器:使用多个进程,或高效的线程同时对请求进行处理;
  3. 复用的I/O服务器:为了支持大量的连接,很多Web服务器都采用了复用结构。在复用结构中,要同时监视所有连接上的活动。当连接状态发生改变时,就对那条连接进行少量的处理,处理结束之后,将连接返回到开放连接列表中,等待下一次状态变化,只有在有事情可做时才会对连接进行处理,在空闲连接上等待的时候并不会绑定线程和进程;
  4. 复用的多线程Web服务器:有些系统会将多线程和复用功能结合在一起,以利用计算机平台上的多个CPU;

Web服务器对资源的映射及访问:

Web服务器是资源服务器,可以接受对目录URL的请求,其路径可以解析为一个目录,而不是文件;

如果用户请求目录URL时,没有提供默认的索引文件,而且Web服务器没有禁止使用目录索引,很多WEb服务器都会自动反悔一个HTML文件,此文件中会列出那个目录中的每个文件的文件名、文件大小和修改日期,以及URL链接。

Apache 禁止自动生成目录或索引文件指令: Options -Indexes

构建响应:

一旦Web服务器识别出了资源,就执行请求方法中描述的动作,并返回响应报文。响应报文中包含有响应 状态码、响应 首部。如果事务处理产生了响应 主体,就将内容放在响应报文中回送过去。

响应报文中通常包括:

  1. 描述了响应主体MIME类型的 Content-Type 首部;
  2. 描述了响应主体长度的 Content-Length 首部;
  3. 实际报文的主体内容;

Web服务器要负责响应主体的MIME类型,可以用文件的扩展名说明MIME类型,

常见的MIME类型如下:

  1. audio / mpeg mpeg
  2. image / png gif
  3. text / plain txt

重定向:

Web服务器有时会返回重定向响应而不是成功的报文,可以将浏览器重定向到其它地方来执行请求;

可用于下列情况:

  1. 永久删除的资源;
  2. 临时删除的资源;
  3. URL增强;
  4. 负载均衡;
  5. 服务器关联;
  6. 规范目录名称;

### 图灵图书 -- HTTP权威指南

豆瓣读书 -- HTTP权威指南

《HTTP权威指南》– 5.Web服务器的更多相关文章

  1. 和我一起学《HTTP权威指南》——Web服务器

    Web服务器 Web服务器会做些什么 1.建立连接(接受或关闭一个客户端连接) 2.接收请求(读取HTTP报文) 3.处理请求(解释请求报文并采取行动) 4.访问资源 5.构建响应(创建带有正确首部的 ...

  2. 《HTTP权威指南》5-Web服务器

    各种形状,风格,尺寸的Web服务器 Web服务器会对HTTP请求进行处理并提供响应.Web服务器有着不同的风格,形状和尺寸但是不管功能,外貌,风格有何差异,所有的Web服务器都能够接收请求资源的HTT ...

  3. HTTP权威指南读书笔记

    HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...

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

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

  5. HTTP权威指南阅读笔记五:Web服务器

    Web服务器会做些什么: 1.建产连接:接受一个客户端连接,或者如果不希望与这个客户端建立连接,就将其关闭. 1)处理新连接 2)客户端主机名识别 3)通过ident确定客户端用户 ident在组织内 ...

  6. 图解HTTP权威指南(三)| Web服务器对HTTP请求的处理和响应

    作者简介   李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷.喜欢钻研底层技术,认为底层基础才是王道.一切新技术都离不开操作系统(CPU.内存.磁盘).网络 ...

  7. 《Web性能权威指南》

    <Web性能权威指南> 基本信息 原书名:High performance browser networking 原出版社: O'Reilly Media 作者: (加)Ilya Grig ...

  8. web性能权威指南(High Performance Browser Networking)

    web性能权威指南(High Performance Browser Networking) https://www.cnblogs.com/qcloud1001/p/9663524.html HTT ...

  9. Web性能权威指南 PDF扫描版​

    Web性能权威指南是谷歌公司高性能团队核心成员的权威之作,堪称实战经验与规范解读完美结合的产物.<Web性能权威指南>目标是涵盖Web开发者技术体系中应该掌握的所有网络及性能优化知识.全书 ...

  10. HTTP 1.x 学习笔记 —— Web 性能权威指南

    HTTP 1.0的优化策略非常简单,就一句话:升级到HTTP 1.1.完了! 改进HTTP的性能是HTTP 1.1工作组的一个重要目标,后来这个版本也引入了大量增强性能的重要特性,其中一些大家比较熟知 ...

随机推荐

  1. Python离线安装Flask

    受限于内网,无法使用pip install Flask直接安装. 以Flask-0.12.2为例 安装Flask需要以下的依赖性,在安装Flask离线版时可以看到依赖性要求. 离线安装文件地址: ht ...

  2. Prometheus 通过 consul 分布式集群实现自动服务发现

    转载自:https://cloud.tencent.com/developer/article/1611091 1.Consul 介绍 Consul 是基于 GO 语言开发的开源工具,主要面向分布式, ...

  3. [笔记] 二维FFT

    假设现在有2个矩阵a和b,分别是n行m列和x行y列,现在你要计算它们的二维卷积,也就是求出矩阵s满足: \(s_{i,j}=\sum_{i'\leq i,j'\leq j}a_{i',j'}b_{i- ...

  4. Django 之ModelAdmin对象

    一.后台管理系统配置 1 在该表对应的models类里面添加一个Meta类 class Meta: verbose_name_plural = '用户表' #指定该表在admin后台的名字为:用户表  ...

  5. Ubuntu 20.04安装mysql后用mysql root无法登录

    刚安装mysql后,执行 mysql -u root -p 提示无法执行 解决方案: sudo mysql -u root -p 使用root权限不用密码就能进入mysql 然后 >ALTER ...

  6. acwing349 黑暗城堡 (最短路径生成树)

    求出最短树,用乘法原理统计答案就行了(模拟prim过程). 不知道说什么了,直接上代码: 1 #include<cstring> 2 #include<iostream> 3 ...

  7. 在开发中关于javaweb中的路径问题小结

    转自http://blog.csdn.net/yinyuehepijiu/article/details/9136117 在javaweb项目中添加配置文件,满足连接数据库配置参数以及其他自定义参数存 ...

  8. 基于纯前端类Excel表格控件实现在线损益表应用

    财务报表也称对外会计报表,是会计主体对外提供的反映企业或预算单位一定时期资金.利润状况的会计报表,由资产负债表.损益表.现金流量表或财务状况变动表.附表和附注构成.财务报表是财务报告的主要部分,不包括 ...

  9. day47-JDBC和连接池03

    JDBC和连接池03 8.事务 8.1事务介绍 基本介绍 JDBC程序中当一个Connection对象创建时,默认情况下是自动提交事务:每次执行一个SQL语句时,如果执行成功,就会向数据库自动提交,而 ...

  10. 在Centos7上安装JDK1.8和tomcat8.5的步骤和过程(亲测可用)

    文章目录 1.在阿里云(Linux)Centos7上安装JDK1.8步骤过程 2.阿里云(Linux)centos7上安装Tomcat8.5步骤过程记录: 卸载JDK Centos7一般都会带有自己的 ...