分类:编程开发
语言:简体中文
大小:未知
发布时间:13-07-13
第1章 使用apache进行应用程序开发1.1 apache web服务器简史1.1.1 apache 11.1.2 apache 21.2 apache软件基金会1.2.1 功绩组织模式(meritocracy)1.2.2 角色1.2.3 哲学理念1.3 apache开发流程1.3.1 apache代码仓库1.3.2 开发者论坛1.3.3 开发人员1.3.4 参与apache工作1.4 apache和知识产权1.4.1 apache许可证1.4.2 第三方知识产权1.5 进一步阅读资料1.5.1 交互式在线论坛1.5.2 会议1.5.3 网站. 1.6 小结第2章 apache平台和架构2.1 纵览2.2 apache运行的两个阶段2.2.1 启动阶段2.2.2 运行阶段2.2.3 停止阶段2.3 多处理模块mpm2.3.1 为什么需要mpm2.3.2 unix类的mpm模块2.3.3 mpm模块和操作系统2.4 基本概念和数据结构2.4.1 request_rec2.4.2 server_rec2.4.3 conn_rec2.4.4 process_rec2.5 其他的关键api组件2.6 apache配置基础2.7 apache的请求处理2.7.1 内容生成2.7.2 请求处理阶段2.7.3 处理钩子2.7.4 数据轴和过滤器2.7.5 处理的顺序2.7.6 处理钩子2.8 小结第3章 apache可移植运行时库3.1 apr3.2 apr实用库3.3 基本的约定3.3.1 参考手册:api文档和doxygen3.3.2 命名空间3.3.3 声明的宏3.3.4 apr_status_t和返回值3.3.5 条件编译3.4 资源管理:apr池3.4.1 资源管理的问题3.4.2 apr池3.4.3 资源的生命周期3.4.4 池的局限性3.5 精选的apr主题3.5.1 字符串和格式3.5.2 国际化3.5.3 时间和日期3.5.4 数据结构3.5.5 bucket和brigade3.5.6 文件系统3.5.7 网络3.5.8 编码和密码3.5.9 uri处理3.5.10 进程和线程3.5.11 资源池3.5.12 api扩展3.6 apr/apache中的数据库3.6.1 dmb和apr_dbm模块3.6.2 sql数据库和apr_dbd3.7 小结第4章 编程技巧和忠告4.1 apache编程约定4.1.1 代码行4.1.2 函数4.1.3 代码块4.1.4 流控制4.1.5 声明4.1.6 注释4.2 管理模块数据4.2.1 配置向量4.2.2 生命周期域4.3 模块之间的通讯4.4 线程安全的编程问题4.5 管理持久数据4.5.1 线程安全4.5.2 内存/资源管理4.6 跨平台编程的问题4.6.1 示例:创建一个临时文件4.7 跨mpm编程问题4.7.1 进程和全局锁4.7.2 内存共享4.8 安全编程问题4.8.1 预防性原则:不要相信任何事情4.8.2 拒绝服务攻击:限制破坏4.8.3 采用操作系统来帮助你4.9 外部的依赖和库4.9.1 第三方的库4.9.2 库的最佳实践4.9.3 使用库构建模块4.10 使用其他语言编写和编译模块4.11 小结第5章 开发内容生成器5.1 helloworld模块5.1.1 模块构架5.1.2 返回值5.1.3 处理器的字段5.1.4 完整的模块5.1.5 使用request_rec对象5.2 请求、响应和环境5.2.1 i/o模块5.2.2 读取表单数据5.3 默认的处理器5.4 小结第6章 请求处理周期和元数据处理器6.1 http超文本传输协议6.1.1 http协议6.1.2 解构http请求6.2 apache的请求处理过程6.2.1 映射至文件系统6.2.2 内容协商6.2.3 安全性6.2.4 操作缓存6.2.5 私有元数据6.2.6 记录日志6.3 转移请求:内部重定向6.3.1 错误文档6.3.2 处理格式错误的请求和恶意请求6.4 采集信息:子请求6.4.1 示例6.5 开发模块6.5.1 选择文档中不同的变量6.5.2 错误处理和复用性6.6 小结第7章 aaa:访问、认证和授权7.1 安全7.1.1 认证:安全的层次7.1.2 登录web7.2 aaa的概览7.3 apache1.x和2.0中的aaa7.4 apache2.1/2.2中的aaa7.4.1 基于主机的访问控制7.4.2 认证:check_user_id7.4.3 密码查询(password lookup)7.4.4 授权7.5 aaa逻辑7.5.1 认证和require指令7.5.2 拒绝访问7.5.3 认证方法7.6 编写aaa模块7.6.1 一个基本认证提供者7.6.2 一个授权函数7.6.3 配置7.6.4 基本认证提供者和摘要认证提供者7.7 实现一个定制的登录机制7.7.1 使用sql进行会话管理7.7.2 在没有浏览器认证对话框时进行认证7.8 小结第8章 过滤模块8.1 输入过滤器和输出过滤器8.2 内容过滤器、协议过滤器和连接过滤器8.3 剖析过滤器8.3.1 回调函数8.3.2 流水线8.4 过滤器api和对象8.4.1 输出过滤器8.4.2 输入过滤器8.5 过滤器对象8.6 过滤器输入/输出8.7 巧妙的apache 2.2过滤机制8.7.1 预处理和后处理8.7.2 mod_filter8.7.3 过滤器的自配置8.7.4 协议处理8.8 示例:通过直接操作bucket来过滤文本8.8.1 bucket函数8.8.2 过滤器8.9 复杂解析8.10 使用现有的解析器进行过滤8.11 类似stdio的过滤器输入/输出8.12 输入过滤器和pull api8.12.1 模式8.12.2 阻塞(block)8.12.3 readbytes8.12.4 输入过滤器示例8.13 小结第9章 模块配置9.1 配置基础9.2 配置数据结构9.3 管理模块配置9.3.1 模块配置9.3.2 服务器配置和目录配置9.4 实现配置指令9.4.1 配置函数9.4.2 示例9.4.3 配置函数中的用户数据9.4.4 封装配置函数9.4.5 配置的作用域9.4.6 配置函数类型9.5 配置层次结构9.6 配置函数中的上下文9.6.1 上下文检查9.6.2 方法和9.7 定制配置容器9.8 可选的配置方法9.9 小结第10章 扩展api10.1 在apache中实现新的函数10.1.1 导出函数10.1.2 可选函数10.2 钩子与可选钩子10.2.1 进一步研究钩子程序10.2.2 执行顺序10.2.3 可选钩子示例:mod_authz_dbd10.3 提供者api10.3.1 实现10.3.2 实现提供者10.4 以服务方式提供api扩展10.4.1 例子:mod_dbd10.4.2 实现reslist10.5 跨平台api构建10.5.1 使用预处理指令10.5.2 声明模块api10.6 小结第11章 apache数据库框架11.1 对新框架的需求11.1.1 apache 1.x/2.0和apache 2.211.1.2 连接池11.2 dbd架构11.3 apr_dbd api11.3.1 数据库操作11.3.2 api函数11.4 使用ap_dbd api11.5 一个示例应用模块:mod_authn_dbd11.6 开发一个新的dbd驱动11.6.1 apr_dbd_internal.h头文件11.6.2 输出驱动11.6.3 驱动函数11.7 小结第12章 模块调试12.1 调试日志12.1.1 错误日志12.1.2 调试12.2 在调试器中运行apache12.2.1 服务器的启动和调试12.2.2 调试和多道处理模块mpm12.2.3 追踪冲突12.2.4 调试核心dump12.3 特殊用途的hook和模块12.3.1 标准模块12.3.2 重大异常模块12.3.3 处理反常运行的模块12.4 过滤器调试12.4.1 mod_diagnostics12.5 小结附录a apache许可证附录b 贡献者许可证协议附录c 超文本传送协议:http/1.1本备忘录状态摘要1 概述1.1 目的1.2 要求1.3 术语1.4 操作概述2 符号惯例和一般语法2.1 扩充bnf2.2 基本规则3 协议参数3.1 http版本3.2 统一资源标识符3.3 日期/时间格式3.4 字符集3.5 内容编码3.6 传送编码3.7 媒体类型3.8 产品记号3.9 质量值3.10 语言标签3.11 实体标签3.12 范围单位4 http消息4.1 消息类型4.2 消息报头4.3 消息主体4.4 消息长度4.5 通用报头字段5 请求5.1 请求行(request-line)5.2 请求所标识的资源5.3 请求报头字段6 应答6.1 状态行6.2 应答报头字段7 实体7.1 实体报头字段7.2 实体主体8 连接8.1 持久连接8.2 消息传送需求9 方法定义9.1 安全和幂等的方法9.2 options9.3 get9.4 head9.5 post9.6 put9.7 delete9.8 trace9.9 connect10 状态码定义10.1 用于报告的1xx10.2 成功的2xx10.3 重定向的3xx10.4 客户端错误的4xx10.5 服务器错误的5xx11 访问认证12 内容协商12.1 服务器驱动协商12.2 代理驱动协商12.3 透明协商13 http中的缓存13.1 http中缓存的基本设计理念13.2 过期模型13.3 验证模型13.4 应答缓存能力13.5 从缓存构造应答13.6 缓存协商的应答13.7 共享和非共享缓存13.8 错误和不完全应答缓存行为13.9 get和head的副作用13.10 刷新或删除后的无效性13.11 强制写通过13.12 缓存替换13.13 历史列表14 报头字段定义14.1 accept(接受)14.2 accept-charset(接受字符集)14.3 accept-encoding(接受编码)14.4 accept-language(接受语言)14.5 accept-range(接受范围)14.6 age(年龄)14.7 allow(允许)14.8 authorization(授权)14.9 cache-control(缓存控制)14.10 connection(连接)14.11 content-encoding(内容编码)14.12 content-language(内容语言)14.13 content-length(内容长度)14.14 content-location(内容位置)14.15 content-md5(内容的md5值)14.16 content-range(内容范围)14.17 content-type(内容类型)14.18 date(日期)14.19 etag(实体标签)14.20 expect(期望)14.21 expire(过期)14.22 from(来自于)14.23 host(主机)14.24 if-match(如果匹配)14.25 if-modified-since(如果自从……被改变)14.26 if-none-match(如果没有一个匹配)14.27 if-range(如果有范围)14.28 if-unmodified-since(如果自从……未修改)14.29 last-modified(最后一次修改)14.30 location(位置)14.31 max-forwards(最大化向前传送)14.32 pragma(特殊指令)14.33 proxy-authenticate(代理认证)14.34 proxy-authorization(代理授权)14.35 range(范围)14.36 referer(参考者)14.37 retry-after(稍后重试)14.38 server(服务器)14.39 te(传送编码)14.40 trailer(跟踪器)14.41 transfer-encoding(传送编码)14.42 upgrade(升级)14.43 user-agent(用户代理)14.44 vary(验证)14.45 via(路由)14.46 warning(警告)14.47 www-authenticate(www-认证)15 安全考虑15.1 个人信息15.2 基于文件和路径名称的攻击15.3 dns欺骗15.4 location报头和欺骗15.5 content-disposition问题15.6 认证证书和空闲的客户端15.7 代理服务器和缓存16 致谢17 参考文献18 作者地址19 附录19.1 互联网媒体类型message/http和application/http19.2 互联网媒体类型multipart/byteranges19.3 可容忍的应用程序19.4 http实体和rfc 2045实体之间的区别19.5 附加特性19.6 和以前版本的兼容20 索引21 全部版权声明致谢索引
...