日期:2014-05-16 浏览次数:20932 次
总结帖:
?
?
首先更新虚拟主机信息,利用process_connection挂钩函数处理。
?
报文解析,HTTP_PROTOCOL
?
HTTP请求头:"GET index.html HTTP/1.1"
HTTP请求域:"Accept:*/*"
HTTP请求体:数据
?
请求信息保存在request_rec中,在请求处理过程中一直存在。
?
读取报文的处理也在这个地方做,输入处理过滤器。比如说文件分隔符(Windows "/", Unix "\")。
?
①URL字符转义
浏览器会对地址栏输入的特殊字符进行转化,例如空格转换成%20,因此服务器需要将字符转换回去。处理函数是:ap_unescape_url()。
?
②从URL中剔除/../和/./字符
确保路径成为绝对路径。处理函数是ap_getparents()。
?
③首次读取URL相关配置信息
从配置系统中查找与该URL相关联的配置信息,为后续的用户权限验证,权限控制做准备。处理函数是ap_location_walk()。
?
④URL名称转换 translate_name
指令Alias:将URL映射到另外一个特定的URL。mod_writer -- URL重写。
?
⑤map to storage
确定指定的资源在磁盘上是否存在。
?
⑥二次读取URL相关配置信息
URL名称转换和映射后,读取改新URL的相关联的配置信息。
?
⑦head parser
检查HTTP请求头。
?
①access_checker
对客户的访问做基础性的检查限制工作。比如根据IP地址,访问时间。模块是mod_access。
?
②check_user_id
检查用户的身份权限(用户名和密码)。
?
③auth_checker
检查用户是否具有访问该资源的权限。
①type_checker
确认客户请求的资源类型。mod_mime。
?
②fixups
补丁修复。可选处理过程。在内容生成以前的最后一步处理操作。
?
?