[Apache源代码全景分析第一卷]Apache请求处理

在请求报文读取完成后,进入请求处理阶段,请求处理阶段包括三个大的阶段:请求解析阶段、安全处理阶段、请求准备阶段,每一个大的阶段又可以分成很多少的阶段。

 

请求解析阶段

 

1.URL字符转义

 

 通常情况下,游览器会自动转换请求地址中的一些特殊字符,如空格为%20,而在服务器上得把这些%XX转换回来,整个URL的转义函数为ap_unescape_url

 

2.从URL中删除/../和/./字符

 

URL中所有的/../和/./字符都在这一阶段调用ap_getparents()函数并被删除,该阶段确保提交给后续阶段的时候是一个绝对的路径。

 

3.首次读取URL相关配置信息

 

完成ap_getparents()后将调用ap_location_walk从配置系统中查找与该URL相关的配置信息,在请求处理的后续如用户授权等都在依赖该配置信息。

 

4、URL名称转换(translate_name)

 

该阶段主要用于对URL进行转换。比如Alias指令用于将某个URL映射到另外一个URL中,而mod_write模块则用于对URl的完全重写,另外,比如代理请求会在请求URL前加上proxy://如果某个模块需要对URL进行修改,那么都 可以在这一阶段完成。

 

5、map_to_storage

 

 如果在translate_name阶段,请求的URL最终转换本次的磁盘路径,map_to_storage将用来确定特定的资源是否在磁盘上存在,使用这个挂钩的原因在于如果所提供的数据不是动态生成的,而是位于磁盘上的文件,那么服务器可能要执行更严格的安全检查。

 

6、二次URL相关配置文件的读取

 

在进行了名称转换和映射后,原先的http://www.xxx.com可能被映射到www.yyy.com,此时还在针动新的URl再次读取其配置信息。

 

7、heal_parser

 

该阶段用来检查http请求头。

 

安全处理阶段

 

1.access_checker

 

该阶段主要对访问做一些基础性的限制工作,比如mod_access模块可以对IP限制。

 

2、check_usr_id

 

该阶段主要是检查用户的身份权限,具体就是检查用户是否存在,或者密码。

 

3、auth_checker

 

尽管用户可以通过了身份认证,但是,如果要访问一些私密文件,那么也会对其进行限制。该阶段主要是检查权限。

 

请求准备阶段

1、type_checker

 

在权限检查完成后,说明可以响应客户的请示了,这时,Apache开始处理客户请求的资源,客户端的信息可能是多种多样,这就要求服务器能处理各种请求,比如:HTML、文本、图片等。

 

2、fixups

 

这是处理请求的最后一个阶段,该阶段后生成的内客就返回给客户端,如果你希望在生成之前再做点什么,就可以放在该阶段完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值