http

《HTTP权威指南》每章的知识点总结

View the Project on GitHub lvzhenbang/http

内容提要

web服务器

web服务器应该做些什么

  1. 接受建立连接请求

  2. 接受请求

  3. 处理请求

  4. 访问报文中指定的资源

  5. 构建响应

  6. 发送响应

  7. 记录事务处理过程

第一步————接受客户端连接

第二步————接收请求报文

  1. 解析请求行,得知方法、url、协议版本,以及crlf符

  2. 解析得到以crlf结尾的首部

  3. 得到以crlf结尾,标志首部结束的空行(如果有的话)

  4. 解析得到主体,(如果有的话)

  1. 单线程web服务器:只能处理一个请求,待当前请求处理完成之后才能处理下一个请求!优点:简单已于实现,适用于低负荷服务器。缺点:不能及时处理其他请求,容易引发延迟过长而导致性能问题。

  2. 多线程及多进程web服务器:能同时处理多个请求!优点:响应及时。缺点:构建复杂,容易快速引起内存消耗过大而死机!最好应该对能同时处理的连接数量进行限制!

  3. 复用i/o的web服务器:复用i/o

  4. 复用i/o和多线程的web服务器:2和3的结合

第三步————处理请求

第四步————对资源的映射及访问

  配置文件根目录
  在配置文件httpd.conf中添加一个DocumentRoot行就可以为Apache Web服务器设置文档的根目录了,如:

  	DocumentRoot /user/local/httpd/files


  配置虚拟目录
  对大多数Web服务器来说,配置虚拟托管的文档根目录是很简单的。对常见的Apache Web服务器来说,需要为每个虚拟Web
  站点配置一个VirtualHosts块,而且每个虚拟服务器都要包含DocumentRoot,如:

  <VirtualHost www.joes-hardware.com>
  	ServerName www.joes-hardware.com
  	DocumentRoot /docs/joe
  	TransferLog /logs/joe.access_log
  	ErrorLog /logs/joe.error_log
  </VirtualHost>

  <VirtualHost www.marys-antiques.com>
  	ServerName www.marys-antiques.com
  	DocumentRoot /docs/mary
  	TransferLog /logs/mary.access_log
  	ErrorLog /logs/mary.error_log
  </VirtualHost>

     ... 

第五步————构建响应


	Web服务器要负责确定响应主体的MIME类型。有很多配置服务器的方法可以将MIME类型与资源关联起来。

	1、MIME类型(mime.types)
	   Web服务器可以用文件的扩展名来说明MIME类型。Web服务器会为每个资源扫描一个包含了所有扩展名的MIME类型的文件,以确定其MIME类型。这种基于扩展名的类型相关是最常见的!

	2、魔法分类(Magic typing)
	   Apache Web服务器可以扫描每个资源的内容,并将其与一个已知模式表(被称为魔法文件)进行匹配,以决定每个文
	   件的MIME类型。这样做可能比较慢,但很方便,尤其是文件没有标准扩展名的时候。

	3、显示分类(Explicit typing)
	   可以对Web服务器进行配置,使其不考虑文件的扩展名或内容,强制特定文件或目录内容拥有某个MIME类型

	4、类型协商
	   有些Web服务器经过配置,可以以多种文档格式来存储资源。在这种情况下,可以配置Web服务器,使其可以通过与用户的协商来是决定使用哪种格式(及相关的MIME类型)“最好”。

重定向

第六步————发送响应

第七步————记录事务日志