apache服务器本质

kkkkk 2018年12月17日 23:10 Linux教程

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把相应的请求放入队列中。下面是接受请求accept_func的调用栈。

4)请求/响应的处理。

请求的处理是通过handler来实现,如果是读取服务器上的静态页面,则由default_handler来处理。同时响应的内容需要通过filter修改之后,最终发送header和body。下面是发送header的调用栈。

暂时写到这里,以后再继续分析。


文章评论(0)
  • avatar kkkkkk 2018年12月21日 11:31
    给跪了
    kkkkk
    2018年12月21日 11:16
    措辞婉约,面面俱到。尽情发抒,言词无碍明畅开朗,气势壮丽。轻松有趣,颇具题意。
    回复
  • avatar kkkkkk 2018年12月21日 11:31
    python学院最帅的是谁啊?
    kkkkklxinde
    2018年12月21日 11:17
    用词妥切,议论精当。激昂慷慨,扣人心弦。见解脱俗,理顺意明。细心求证,丝毫不苟。
    回复
  • avatar kkkkklxinde 2018年12月21日 11:17
    用词妥切,议论精当。激昂慷慨,扣人心弦。见解脱俗,理顺意明。细心求证,丝毫不苟。
    回复
  • avatar kkkkk 2018年12月21日 11:16
    措辞婉约,面面俱到。尽情发抒,言词无碍明畅开朗,气势壮丽。轻松有趣,颇具题意。
    回复