Apache HTTP连接处理流程

Apache HTTP连接处理流程

总结帖:

 

 

首先更新虚拟主机信息,利用process_connection挂钩函数处理。

 

1. 请求读取 ap_read_request

报文解析,HTTP_PROTOCOL

 

HTTP请求头:"GET index.html HTTP/1.1"

HTTP请求域:"Accept:*/*"

HTTP请求体:数据

 

请求信息保存在request_rec中,在请求处理过程中一直存在。

 

读取报文的处理也在这个地方做,输入处理过滤器。比如说文件分隔符(Windows "/", Unix "\")。

 

2. 请求处理 ap_process_request
(1):请求解析

①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请求头。

 

(2):安全处理

①access_checker

对客户的访问做基础性的检查限制工作。比如根据IP地址,访问时间。模块是mod_access。

 

②check_user_id

检查用户的身份权限(用户名和密码)。

 

③auth_checker

检查用户是否具有访问该资源的权限。

(3):请求准备

①type_checker

确认客户请求的资源类型。mod_mime。

 

②fixups

补丁修复。可选处理过程。在内容生成以前的最后一步处理操作。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值