2013年2月5日

[apache] mod_dumpio模块

摘要: 在理解代码时,发现一些apache非常有用的模块,平时没怎么关注,因此这里整理一些。先说明mod_dumpio,其他模块后续补充。mod_dumpio 会记录所有Apache接收到的请求数据和输出的响应数据,dump数据发生在SSL解码(输入)之后和SSL编码之前(输出)。这么做会导致在日志中写入海量的数据,因此建议在发现问题并进行调试的时候使用。或者必要时,也可以做好日志文件的滚动。【设定方法】LoadModule dumpio_module modules/mod_dumpio.soDumpIOInput OnDumpIOOutput On同时,为了输出到日志文件中,需要确保LogLeve 阅读全文

posted @ 2013-02-05 18:12 facome 阅读(1217) 评论(0) 推荐(0) 编辑

2013年1月24日

[apache] 挂钩说明(1)

摘要: 从大的方面来看,Apache对HTTP的请求可以分为连接、处理和断开连接三个阶段;从小的方面而言,每个阶段又可以分为更多的子阶段。比如对HTTP的请求,我们可以进一步划分为客户身份验证、客户权限认证、请求校验等阶段,每一个阶段调用相应的函数进行处理。在Apache中,这些子阶段可以用术语“挂钩(HOOK)”来描述。其中的每一个挂钩可以看做是抽象的,他们本身并不会完成什么功能,但在每一个挂钩中我们都维护一个类似于List的数据结构,在这个List中则存放着处理函数的指针,这些函数是挂钩的实现(我们这里称它为挂钩函数)。简言之,挂钩=挂载点;挂钩函数=具体实现功能的函数。1. hook类型1.1 阅读全文

posted @ 2013-01-24 23:31 facome 阅读(1681) 评论(1) 推荐(0) 编辑

2013年1月23日

apache服务器本质

摘要: apache服务器本质上说是一个TCP socket服务,socket模型如下:下面以worker MPM来说明apache代码中相应处理的位置在哪里:(以apache httpd 2.2.23版本的代码为基础)1) 在第一次启动时验证配置没有异常时,创建了socket。2) open_logs 挂钩调用了 ap_setup_listeners() ,最终在listen.c的make_socket方法执行了apr_socket_bind/apr_socket_listen,进入通信的环节。3) worker.c的监听线程中负责接受请求,然后利用ap_queue_push把相应的请求放入队列中。 阅读全文

posted @ 2013-01-23 00:03 facome 阅读(5310) 评论(8) 推荐(11) 编辑

导航