1.1 Apache概述 1
1.1.1 Web服务器的工作原理 1
第Ⅰ部分 Apache概述 1
第1章 Apache简介 1
1.1.2 Apache软件基金 4
1.1.3 如何开发Apache 5
1.1.4 使用Apache的用户 6
1.2.2 从CVS下载源代码 9
1.2.1 Apache 2.0发布模型 9
1.2 下载Apache 9
1.2.3 下载作为存档版本的源代码 11
1.2.4 商业选择 14
2.1.1 平台支持 16
2.1 Apache 2.0 16
第2章 Apache 2.0和Apache 1.3、IIS以及Sun ONE 16
2.1.2 性能 17
2.1.4 模块化 18
2.1.3 可靠性 18
2.1.6 配置 19
2.1.5 安全性 19
2.2.1 平台支持 20
2.2 Apache服务器1.3 20
2.2.4 模块化 21
2.2.3 可靠性 21
2.2.2 性能 21
2.3.1 平台支持 22
2.3 MicrosoftInternet信息服务器 22
2.2.5 安全性 22
2.2.6 配置 22
2.3.3 可靠性 23
2.3.2 性能 23
2.3.5 安全 24
2.3.4 模块化 24
2.4.2 性能 25
2.4.1 平台支持 25
2.3.6 配置 25
2.4 Sun ONE 25
2.4.6 配置 26
2.4.5 安全性 26
2.4.3 可靠性 26
2.4.4 模块化 26
3.1 获取源码 27
第3章 配置Apache 27
第Ⅱ部分 配置、编译以及安装Apache 27
3.2 准备配置 28
3.1.2 Windows 28
3.1.1 Unix和Mac 0S X 28
3.3.1 为站点选择最好的 MPM 30
3.3 在Unix和Mac OS X上运行./configure 30
3.3.2 标准配置选项 35
3.3.3 模块配置选项 37
4.1 Unix 44
第4章 编译Apache 44
4.2.1 在IDE中使用MSVC++(6.0和7.0) 46
4.2 Windows 46
4.2.2 从命令行构建Windows上的Apache 50
4.3 构建Apache源代码以外的模块 52
5.1 Apache安装目录 57
第5章 安装Apache 57
5.2.1 Unix和Mac OS x 59
5.2 在构建之后进行安装 59
5.2.2 Windows 60
5.3 安装二进制发行版本 64
5.3.1 Unix和Mac OS X 65
5.3.2 Windows 68
5.4 第一次启动Apache 73
6.1 模块的作用 78
第6章 模块概述 78
6.1.1 Mod_backhand模块 79
6.2 标准Apache模块的类别 80
6.1.4 SSL模块 80
6.1.2 Mod_DAV模块 80
6.1.3 PHP模块 80
6.2.1 认证、授权和账户确认(AAA) 81
6.2.7 过滤器模块 82
6.2.6 试验模块 82
6.2.2 针对体系结构的模块 82
6.2.3 缓存模块 82
6.2.4 DAV模块 82
6.2.5 回应模块 82
6.2.11 映射器模块 83
6.2.10 日志记录器模块 83
6.2.8 生成器模块 83
6.2.9 HTTP模块 83
6.2.14 SSL模块 84
6.2.13 代理模块 84
6.2.12 元数据模块 84
6.3.1 静态函数 85
6.3 请求处理阶段 85
6.3.2 挂钩 87
7.1 MPM概述 93
第7章 多处理模块 93
7.2.1 用户编写MPM的原因 94
7.2 编写MPM 94
7.2.2 MPM在服务器中的作用 95
7.2.3 示例MPM 98
8.1 模块结构 119
第8章 标准模块 119
8.2.1 宏指令 121
8.2 命令表 121
8.2.2 指令类型 122
8.2.3 指令位置 123
8.3 编写简单模块 125
9.1 配置文件 135
第9章 设置基本的HTTP服务器 135
第Ⅳ部分 Apache模块 135
9.2 指令的实质 138
9.2.1 文件的位置 139
9.2.2 本的Apache配置 141
9.2.3 设置MIME类型 143
9.3 HTTP请求/响应 144
9.4 错误发生时 147
9.4.1 定制错误页面 150
9.4.2 使用.var特性 151
10.1 标准Apache AAA模块 153
第10章 认证、授权和账户确认 153
10.1.1 认证 154
1 0.1.2 授权 162
10.1.3 访问控制 163
10.1.4 认证、授权及访问控制的综合运用 167
10.2 存储口令信息的位置 169
10.3 更多的认证模块 170
11.1.1 文件传输协议(FTP) 171
11.1 过去如何构建Web站点 171
第11章 构建Web站点 171
11.1.4 FrontPage服务器扩展 172
11.1.3 网络文件系统(NFS) 172
11.1.2 安全Shell(SSH) 172
11.2 基于Web的分布式授权和版本控制 173
11.3 在Web站点上设置DAV 175
11.3.1 已知的DAV安全考虑 178
11.3.2 示例配置 179
11.4.1 Unix 180
11.4 DAV客户程序 180
11.4.2 Windows 182
11.4.3 与平台无关的DAV客户程序 183
12.1.1 Apache核心 185
12.1 随Apache提供的内容生成器 185
第12章 生成内容 185
12.1.2 mod_autoindex内容生成模块 186
12.1.3 mod_asis内容生成模块 193
12.1.4 mod_info内容生成模块 194
12.1.5 mod_status内容生成模块 195
12.1.6 moa_cgi和mod_cgid内容生成模块 196
12.1.7 外部内容生成器 202
12.2 编写内容生成器 203
第13章 过滤器 216
13.1 设置过滤器 217
13.2 随Apache提供的过滤器 218
13.2.1 Mod_ext_filter过滤器 219
13.2.2 Mod_deflate 过滤器 220
13.2.3 Mod_include过滤器 222
13.2.4 timefmt选项 225
13.3.1 存储段和存储段组 230
13.3 过滤器的工作方式 230
13.3.2 输出过滤器 240
13.3.3 输入过滤器 243
13.3.4 使用Apache API添加过滤器 244
13.4.1 输出过滤器示例 246
13.4 编写输出过滤器 246
13.4.2 输入过滤器示例 249
14.1 符号链接 253
第14章 站点内容增加后所做的工作 253
14.2 从URI空间映射到文件 256
14.2.1 允许文件存在于DocumentRoot以外 256
14.2.2 将文件移到新位置 257
14.2.3 允许用户拥有自己的 Web站点 258
14.2.4 使用 mod_rewrite 进行重写 260
14.3.1 将主目录移到不同的计算机 269
14.3 mod_rewrite 示例 269
14.3.3 针对用户的虚拟主机 270
14.3.2 基于时间重定向请求 270
14.3.4 安全地转变URL 271
15.1.2 基于名称的虚拟主机 273
15.1.1 基于IP的虚拟主机 273
第15章 虚拟主机 273
15.1 如何在HTTP中使用虚拟主机 273
15.2 配置虚拟主机 274
15.2.1 普通的虚拟主机指令 275
15.2.2 基于IP的虚拟主机 277
15.2.3 基于名称的虚拟主机 278
15.2.4 配置同时基于IP和基于名称的主机 280
15.3 保持站点分离 282
15.2.5 检查用户的虚拟主机配置 282
15.3.1 日志和虚拟主机 283
15.3.2 针对各个主机的不同用户和组 285
15.4 处理大量虚拟主机 288
16.1 使用协议模块的原因 291
第16章 使用Apache服务于不同协议 291
16.2 如何将协议与请求进行映射 293
16.3 POP3 294
16.4 编写协议模块 295
16.4.2 协议模块示例 296
16.4.1 协议和请求阶段 296
17.1 用户如何知道存在问题 307
第17章 错误日志 307
第Ⅴ部分 调试用户的Apache设置 307
17.2.1 日志文件的位置 308
17.2 首先要查看错误日志 308
17.2.2 日志内容 309
17.3.1 运行服务器进行调试 312
17.3 当错误日志不能解决问题时所采取的措施 312
17.3.2 调试用户服务器(Unix/Mac OS X) 314
17.3.3 Windows服务 315
17.3.4 问题数据库 318
18.1.2 ServerName指令和端口 323
18.1.1 在FreeBSD上使用线程化MPM 323
第18章 常见的问题和错误 323
18.1 配置Apache 323
18.1.4 Alias阻碍处理 324
18.1.3 被忽略的.htaccess文件 324
18.2 启动和终止Apache 325
18.1.5 存储口令的位置 325
18.2.3 不能够将组ID设置为组4294967295 326
18.2.2 即使正在使用线程化MPM,Apache也会启动50个进程 326
18.2.1 即使配置了三个子进程,Apache也只启动一个子进程 326
18.2.6 服务器不能启动 327
18.2.5 服务器已经启动,但Apachectl没有启动 327
18.2.4 当启动服务器时,可以连接HTTP端口,但不能连接HTTPS端口 327
18.2.10 找不到核心文件 328
18.2.9 apachectl不能够终止服务器 328
18.2.7 在Windows上,Apache不能够与终端分离 328
18.2.8 如果错误日志超过2GB,Apache就不能够启动 328
18.2.11 不能够绑定端口 329
18.3.1 文件可以使用IE,但不能使用Netscape Navigator 330
18.3 客户问题 330
18.2.12 服务器拒绝响应请求 330
18.4.1 CGI脚本的运行速度很慢 331
18.4 生成和过滤内容 331
18.3.2 在错误日志中得到“ConnectionReset by Peer(对等端重置连接)”消息 331
18.4.5 不断地从目录得到一个已禁止的消息 333
18.4.4 Apache的文件处理缓慢 333
18.4.2 CGI脚本不能运行 333
18.4.3 即使已经进行了配置,也不能够处理SSI文件 333
18.5.1 在Unix上运行Apache的安全考虑 334
18.5 安全考虑 334
18.4.6 配置了认证,但是没有提示输入口令 334
18.5.3 针对default.ida或者cmd.exe的多个错误日志表项 335
18.5.2 在Windows 上运行Apache的安全考虑 335
18.5.4 如何作为特定的用户运行CGI 336
19.1 获得httpd-test程序包 341
第19章 使用httpd-test 341
19.2.1 使用Flood的原因 342
19.2 Flood 342
19.2.2 设置Flood 343
19.2.3 运行Flood 344
19.2.4 分析结果 348
19.3.1 设置框架 350
19.3 Perl框架 350
19.3.3 运行整个套件 351
19.3.2 运行测试 351
19.3.5 编写自己的测试 353
19.3.4 使测试输出有意义 353
20.1.1 访问日志 354
20.1 标准Apache 日志文件 354
第Ⅵ部分 Apache管理 354
第20章 日志 354
20.1.2 传输日志 359
20.2 管道化日志 360
20.1.3 Cookie日志 360
20.2.1 主机名称解析 362
20.2.2 日志滚动 363
20.2.3 编写自己的日志处理器 364
20.3.1 在自己的文件中进行日志记录 365
20.3 在模块中进行日志记录 365
20.3.2 扩展mod_log_config 367
21.1.1 写入日志文件的位置 370
21.1 日志文件 370
第21章 磁盘管理 370
21.1.2 将日志置于哪个驱动器 371
21.2 Web页面的文件许可权 372
21.3 工进制程序的文件权限 373
21.4 Windows权限 374
22.1.1 Web服务器的性能很重要 377
22.1 Web站点的性能 377
第22章 性能调试 377
22.1.2 性能与可伸缩性 378
22.1.3 度量性能的方法 379
22.2 所要使用的MPM 380
22.3 删除.htaccess文件 381
22.4 所要使用的Mutex 383
22.5.1 DNS的危险 384
22.5 是否要在请求期间进行DNS请求 384
22.5.3 CGI和SSI脚本 385
22.5.2 日志文件 385
22.6 符号链接和Apache 386
22.5.4 控制访问 386
22.7 对提供服务的文件进行协商 387
22.9 管道化连接 388
22.8 动态模块 388
22.10.1 静态页面与动态页面 389
22.10 正在为请求提供服务的内容 389
22.10.2 缓存页面 390
23.1.1 访问日志 394
23.1 观察日志 394
第23章 维护 394
23.1.2 错误日志 398
23.1.3 日志滚动 400
23.2 保持Apache的时效性 401
23.2.2 运行并行服务器 402
23.2.1 有组织的更新 402
23.3.1 移植配置文件 404
23.3 从1.3升级到2.0 404
23.3.2 利用新特性 406
24.1 分割配置文件 409
第24章 分割配置任务 409
第Ⅶ部分 高级Apache管理 409
24.1.1 使用include指令 410
24.2 通过htaccess改变配置 411
24.1.2 在用户间进行分割 411
24.2.1 启用和控制.htaccess文件 412
24.2.2 .htaccess中的指令 414
24.2.3 合并.htaccess选项 415
24.2.5 比较Directory指令和htaccess文件 416
24.2.4 安全限制 416
24.2.6 使用.htaccess文件的时机 417
25.1 mod_perl扩展组件 418
第25章 在用户服务器中添加第三方模块 418
25.1.1 安装 419
25.1.3 mod_perl编程 420
25.1.2 配置Apache 420
25.1.4 从CGI移植到mod_perl 422
25.2.2 配置Apache 423
25.2.1 安装 423
25.2 mod_php扩展组件 423
25.2.3 mod_php编程 424
25.3 mod_snake扩展组件 425
25.3.2 配置Apache 426
25.3.1 安装 426
25.3.3 mod_snake编程 427
25.4 其他模块 428
第26章 安全套接字层 440
第Ⅷ部分 Apache安全 440
26.1 SSL概述 441
26.1.1 SSL的作用 442
26.1.2 SSL握手 443
26.1.3 客户和服务器认证 446
26.2 设置SSL 447
26.2.1 生成凭证和密钥 448
26.2.2 设置虚拟主机 449
26.3 SSL会话缓存 457
27.1 防火墙概述 459
第27章 防火墙和代理服务器 459
27.2 使用代理服务器通过防火墙 460
27.3 为代理服务器设置浏览器 467
27.4.1 通用的缓存指令 468
27.4 设置代理服务器缓存页面 468
27.4.2 基于磁盘的缓存指令 469
27.4.3 基于内存的缓存 470
27.5 SSL和代理服务器 471
27.5.2 使用SSL访问原始服务器 472
27.5.1 使用代理服务器作为通道 472
A.1.3 mpm_netware.c 475
A.1.2 leader.c 475
第Ⅸ部分 附 录 475
附录A 可能的Apache日志消息 475
A.1 EMERG 475
A.1.1 bs2login.c 475
A.2 ALERT 476
A.1.8 worker.c 476
A.1.4 mpm_winnt.c 476
A.1.5 prefork.c 476
A.1.6 threadpool.c 476
A.1.7 unixd.c 476
A.2.8 unixd.c 477
A.2.7 threadpool.c 477
A.2.1 bs2login.c 477
A.2.2 config.c 477
A.2.3 mod_isapi.c 477
A.2.4 mod_unique_id.c 477
A.2.5 mpm_common.c 477
A.2.6 mpmt_os2.c 477
A.3.4 mod_auth_digest.c 478
A.3.3 log.c 478
A.2.9 worker.c 478
A.3 CRIT 478
A.3.1 config.c 478
A.3.2 listen.c 478
A.3.8 mpm_winnt.c 479
A.3.7 mod_unique_id.c 479
A.3.5 mod_nw_ssl.c 479
A.3.6 mod_rewrite.c 479
A.3.15 worker.c 480
A.3.14 threadpool.c 480
A.3.9 os.c 480
A.3.10 request.c 480
A.3.11 rfc1413.c 480
A.3.12 scoreboard.c 480
A.3.13 service.c 480
A.4.7 log.c 481
A.4.6 listen.c 481
A.4 ERR 481
A.4.1 bs2login.c 481
A.4.2 config.c 481
A.4.3 core.c 481
A.4.4 http_protocol.c 481
A.4.5 http_request.c 481
A.4.15 mod_auth_digest.c 482
A.4.14 mod_auth_dbm.c 482
A.4.8 main.c 482
A.4.9 mod_access.c 482
A.4.10 mod_alias.c 482
A.4.11 mod_asis.c 482
A.4.12 mod_auth.c 482
A.4.13 mod_auth_anon.c 482
A.4.19 mod_cgi.c 483
A.4.18 mod_cern_meta.c 483
A.4.16 mod_autoindex.c 483
A.4.17 mod_cache.c 483
A.4.22 mod_dav.c 484
A.4.21 mod_charset_lite.c 484
A.4.20 mod_cgid.c 484
A.4.27 mod_include.c 485
A.4.26 mod_imap.c 485
A.4.23 mod_deflate.c 485
A.4.24 mod_expires.c 485
A.4.25 mod_ext_filter.c 485
A.4.30 mod_mime_magic.c 486
A.4.29 mod_mime.c 486
A.4.28 mod_log_config.c 486
A.4.35 mpm_common.c 487
A.4.34 mod_win32.c 487
A.4.31 mod_negotiation.c 487
A.4.32 mod_rewrite.c 487
A.4.33 mod_status.c 487
A.4.41 protocol.c 488
A.4.40 prefork.c 488
A.4.36 mpm_netware.c 488
A.4.37 mpm_winnt.c 488
A.4.38 mpmt_os2.c 488
A.4.39 mpmt_os2_child.c 488
A.4.46 request.c 489
A.4.45 proxy_util.c 489
A.4.42 proxy_connect.c 489
A.4.43 proxy_ftp.c 489
A.4.44 proxy_http.c 489
A.4.50 ssl_engine_log.c 490
A.4.49 ssl_engine_kernel.c 490
A.4.47 service.c 490
A.4.48 ssl_engine_io.c 490
A.4.58 vhost.c 491
A.4.57 util_xml.c 491
A.4.51 unixd.c 491
A.4.52 util.c 491
A.4.53 util_ebcdic.c 491
A.4.54 util_filter.c 491
A.4.55 util_lock.c 491
A.4.56 util_script.c 491
A.5.4 mod_auth_digest.c 492
A.5.3 log.c 492
A.4.59 worker.c 492
A.5 WARNING 492
A.5.1 config.c 492
A.5.2 listen.c 492
A.5.6 mod_file_cache.c 494
A.5.5 mod_env.c 494
A.5.10 mod_so.c 495
A.5.9 mod_proxy.c 495
A.5.7 mod_isapi.c 495
A.5.8 mod_mime.c 495
A.6.1 config.c 496
A.6 NOTICE 496
A.5.11 mpm_common.c 496
A.5.12 mpm_winnt.c 496
A.5.13 proxy_http.c 496
A.5.14 proxy_util.c 496
A.5.15 worker.c 496
A.6.4 main.c 497
A.6.3 log.c 497
A.6.2 core.c 497
A.6.13 mod_suexec.c 498
A.6.12 mod_so.c 498
A.6.5 mod_auth_digest.c 498
A.6.6 mod_cgi.c 498
A.6.7 mod_dav.c 498
A.6.8 mod_negotiation.c 498
A.6.9 mod_nw_ssl.c 498
A.6.10 mod_optional_fn_export.c 498
A.6.11 mod_proxy.c 498
A.6.16 mpm_winnt.c 499
A.6.15 mpm_netware.c 499
A.6.14 mpm_common.c 499
A.6.19 worker.c 500
A.6.18 registry.c 500
A.6.17 proxy util.c 500
A.7.2 mod_auth_anon.c 501
A.7.1 core.c 501
A.7 INFO 501
A.7.1 2 mpm_winnt.c 502
A.7.11 mpm_netware.c 502
A.7.3 mod_auth_digest.c 502
A.7.4 mod_cache.c 502
A.7.5 mod_disk_cache.c 502
A.7.6 mod_isapi.c 502
A.7.7 mod_proxy.c 502
A.7.8 mod_speling.c 502
A.7.9 mod_unique_id.c 502
A.7.10 mod_win32.c 502
A.8.1 mod_alias.c 503
A.8 DEBUG 503
A.7.13 mpmt_os2.c 503
A.7.14 protocol.c 503
A.7.15 proxy_ftp.c 503
A.7.16 request.c 503
A.7.17 service.c 503
A.7.18 worker.c 503
A.8.5 mod_charset_lite.c 504
A.8.4 mod_cgid.c 504
A.8.2 mod_auth_digest.c 504
A.8.3 mod_cache.c 504
A.8.9 mod_mime_magic.c 505
A.8.8 mod_headers.c 505
A.8.6 mod_deflate.c 505
A.8.7 mod_ext_filter.c 505
A.8.14 proxy_ftp.c 506
A.8.13 proxy_connect.c 506
A.8.10 mod_proxy.c 506
A.8.11 mod_so.c 506
A.8.12 mpm_winnt.c 506
A.8.16 proxy_util.c 507
A.8.15 proxy_http.c 507
A.8.18 worker.c 508
A.8.17 util.c 508
B.1.1 分支多处理模块 509
B.1 源代码 509
附录B 源代码以及示例配置 509
B.1.2 Hello World模块 529
B.1.3 输出过滤器 530
B.1.4 输入过滤器 533
B.1.5 示例协议模块 536
B.2 例配置文件 556
附录C 其他Apache资源 562
C.1 书籍 562
C.1.1 管理Apache 562
C.2 Web站点 563
C.2.1 普通Apache 563
C.1.2 编写Apache模块 563
C.2.2 Apache的商业资源 564