-
一次完整的http请求处理过程:
(1) 建立或处理连接:接收请求或拒绝请求
(2) 接收请求:
接收来自于网络的请求报文中对某资源的一次请求的过程;
并发访问响应模型(Web I/O):
单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应;
多进程I/O结构:并行启动多个进程,每个进程响应一个请求;
复用I/O结构:一个进程响应n个请求;
多线程模型:一个进程生成N个线程,每个线程响应一个用户请求;
事件驱动:event-driven
复用的多进程I/O结构:启动多个(m)进程,每个进程响应n个请求;
(3) 处理请求:对请求报文进行解析,并获取请求的资源及请求方法等相关信息
元数据:请求报文首部
(4) 访问资源:获取请求报文中请求的资源
web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源;这些资源放置于本地文件系统某路径下,此路径通常称为DocRoot
/var/www/html/
web服务器资源路径映射方式:
(a) docroot
(b) alias
(c) 虚拟主机docroot
(d) 用户家目录docroot
(5) 构建响应报文
资源的MIME类型:
显式分类
魔法分类
协商分类
URL重定向:
web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径;
(6) 发送响应报文
(7) 记录日志
-
http服务器程序:
httpd (apache)
nginx
lighttpd
应用程序服务器:
IIS
tomcat, jetty, jboss, resin
webshpere, weblogic, oc4j
-
httpd的安装配置和使用:
httpd: apache
a patchy server = apache
ASF: apache software foundation
-
httpd的特性:
高度模块化:core + modules
DSO: Dynamic Shared Object
MPM:Multipath Processing Modules
prefork:多进程模型,每个进程响应一个请求;
一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;最大不会超过1024个;
worker:多线程模型,每个线程响应一个请求;
一个主进程:生成多个子进程,每个子进程负责生个多个线程,每个线程响应一个请求;
m进程,n线程:m*n
event:事件驱动模型,每个线程响应n个请求;
一个主进程:生成m个子进程,每个进程直接n个请求;
m*n
httpd-2.2: event为测试使用
httpd-.24:event可生产使用
-
httpd的功能特性:
虚拟主机
IP、Port、FQDN
CGI:Common Gateway Interface,通用网关接口;
反向代理
负载均衡
路径别名
丰富的用户认证机制
basic
digest
支持第三方模块
安装httpd:
rpm包
源码编译安装
本文转自echoroot 51CTO博客,原文链接:http://blog.51cto.com/echoroot/1948003,如需转载请自行联系原作者