第1章 Apache——排名第一的Web服务器 1
第一部分 开始 1
1.1 Apache的特征 2
1.2 Apache的体系结构 3
1.3 Apache的未来 4
1.3.1 缺乏GUI链接 5
1.3.2 为下一个千年做好准备 6
1.4 理解Apache的许可证 7
1.5 谁在使用Apache 7
1.6 准备好了吗 7
第2章 取得并安装Apache 8
2.1 正式的Apache源代码 8
2.2 系统需求 9
2.3 下载软件 10
2.4.1 配置选项 11
2.4 为系统配置源代码 11
2.4.2 测试新建立的Apache 14
2.5 使用下载的可执行文件 14
2.6 创建Apache目录 15
2.7 安装Apache 16
2.8 紧跟Apache的发展 16
2.9 小结 16
第3章 配置并运行Apache 17
3.1 配置服务器 17
3.1.1 httpd.conf 18
3.1.2 srm.conf 28
3.1.3 access.conf 37
3.2 启动和停止服务器 40
3.2.1 独立的服务器 40
3.2.2 由inetd运行的Apache服务器 42
3.3 测试Apache服务器 43
3.4 小结 44
第4章 内核命令 45
4.1 Apache命令的适用范围 45
4.1.1 服务器配置的使用范围 45
4.1.2 容器的使用范围 46
4.1.3 针对目录的使用范围 47
4.2 一般的配置命令 47
4.2.1 AccessConfig 47
4.2.2 AccessFileName 48
4.2.3 BindAddress 49
4.2.4 CoreDumpDirectory 49
4.2.5 DocumentRoot 49
4.2.6 ErrorDocument 50
4.2.8 Listen 51
4.2.7 Include 51
4.2.9 Port 52
4.2.10 User 52
4.2.11 Group 53
4.2.12
4.2.13 Options 54
4.2.14 ResourceConfig 55
4.2.15 ServerAdmin 55
4.2.16 ServerName 56
4.2.17 ServerRoot 56
4.2.18 DefaultType 56
4.3 性能和资源配置命令 57
4.3.1 控制Apache进程 57
4.3.2 进行持续连接 60
4.3.3 控制系统资源 62
4.4 标准的容器命令 63
4.3.4 使用动态装卸模块的命令 63
4.4.1
4.4.2
4.4.3
4.4.4
4.4.5
4.4.6
4.5 虚拟主机专用命令 66
4.5.1
4.5.2 NameVirtualHost 67
4.5.3 ServerAlias 68
4.5.4 ServerPath 68
4.6.2 ScoreBoardFile 69
4.6.3 PidFile 69
4.6.1 ErrorLog 69
4.6 记录日志命令 69
4.6.4 LockFile 70
4.7 认证和安全命令 70
4.7.1 AllowOverride 70
4.7.2 AuthName 71
4.7.3 AuthType 71
4.7.4 require 71
4.7.5 Satisfy 72
4.7.6 IdentityCheck 73
4.7.7 HostNameLookups 73
4.7.8
4.8 小结 74
5.2 mod_actions 75
5.2.1 Action 75
第5章Apache模块 75
5.1 mod_access 75
5.2.2 Script 79
5.3 mod_alias 80
5.3.1 Alias 80
5.3.2 AliasMatch 80
5.3.3 Redirect 81
5.3.4 RedirectMatch 81
5.3.5 RedirectTemp 81
5.3.6 RedirectPermanent 82
5.3.7 ScriptAlias 82
5.3.8 ScriptAliasMatch 82
5.4 mod_asis 82
5.7 mod_auth_db 83
5.9 auth_external 83
5.8 mod_auth_dbm 83
5.6 mod_auth_anon 83
5.5 mod_auth 83
5.10 mod_autoindex 84
5.10.1 AddAlt 85
5.10.2 AddAltByEncoding 85
5.10.3 AddAltByType 85
5.10.4 AddDescription 85
5.10.7 AddIconByType 86
5.10.6 AddIconByEncoding 86
5.10.5 AddIcon 86
5.10.8 DefaultIcon 87
5.10.9 FancyIndexing 87
5.10.10 HeaderName 87
5.10.11 IndexIgnore 87
5.10.12 IndexOptions 88
5.10.13 ReadmeName 88
5.11.3 MetaSuffix 89
5.11.2 MetaDir 89
5.11 mod_cern_meta 89
5.11.1 MetaFiles 89
5.12 mod_cgi 90
5.13 mod_digest 90
5.14 mod_dir 90
5.14.1 DirectoryIndex 90
5.15 mod_env 91
5.15.1 PassEnv 91
5.15.2 SetEnv 91
5.15.3 UnsetEnv 91
5.16 mod_expires 91
5.16.2 ExpiresByTye 92
5.16.3 ExpiresDefault 92
5.16.1 ExpiresActive 92
5.17 mod_headers 93
5.17.1 Header 93
5.18 mod_imap 93
5.18.1 ImapMenu 95
5.18.2 ImapDefault 95
5.18.3 ImapBase 95
5.19 mod_include 96
5.20 mod_info 96
5.21 mod_log_agent 96
5.22 mod_log_config 96
5.23 mod_log_referer 96
5.24 mod_mine 96
5.24.1 AddEncoding 96
5.24.4 AddType 97
5.24.5 ForceType 97
5.24.2 AddHandIer 97
5.24.3 AddLanguage 97
5.24.6 SetHandler 98
5.24.7 TypesConfig 98
5.25 mod_negotiation 98
5.25.1 CacheNegotiatedDocs 99
5.25.2 LanguagePriority 99
5.26 mod_rewrite 99
5.27 mod_setenvif 99
5.27.1 BrowserMatch 99
5.27.2 BrowserMatchNoCase 100
5.27.3 SetEnvIf 100
5.27.4 SetEnvIfNoCase 100
5.29 mod_status 101
5.31 mod_usertrack 101
5.30 mod_unique_id 101
5.28.1 CheckSpelling 101
5.28 mod_speling 101
5.32 小结 102
第二部分 管理Web站点 103
第6章 建立虚拟站点 103
6.1 你需要虚拟Web站点吗 103
6.2 域名注册 105
6.3.1 建立域名的数据库记录 106
6.3 对虚拟Web站点的DNS配置 106
6.3.2 在基于IP和基于名称之间作出选择 111
6.4 用于虚拟主机的Apache配置 115
6.4.1 设置多个Apache守护进程 116
6.4.2 设置单独的Apache守护进程 117
6.5 一般虚拟主机的例子 119
6.5.1 在有多个IP地址的服务器上的基于IP的虚拟主机 119
6.5.2 无主服务器的基于IP的虚拟主机 120
6.5.3 不同端口上基于IP的虚拟主机 121
6.5.4 基于名称的虚拟主机 122
6.5.5 混合的基于IP和基于名称的虚拟主机 124
6.5.6 使用_default_的虚拟主机 124
6.5.7 将基于名称的虚拟主机转变为基于IP的虚拟主机 125
6.6 建立虚拟主机的限制因素 126
6.7 用于虚拟Web站点的sendmail配置 126
6.7.1 对虚拟SMTP邮件服务器的DNS配置 127
6.7.2 配置/etc/sendmail.cw 127
6.7.3 建立虚拟用户表数据库 128
6.7.4 配置/etc/sendmail.cf 128
6.7.5 测试虚拟e-mail服务 129
6.8 小结 130
第7章 Apache的服务器端包含命令 131
7.1 什么是SSI 131
7.2 为SSI配置Apache 132
7.2.1 为SSI HTML页添加新的处理程序 133
7.2.2 为SSI HTML页添加新的文件扩展名 134
7.2.3 使SSI为目录进行语义分析 134
7.3 使用SSI命令 135
7.3.1 config 135
7.3.2 echo 138
7.3.3 exec 138
7.3.4 fsize 141
7.3.5 flastmod 141
7.3.6 include 142
7.3.7 printenv 142
7.3.8 set 143
7.4 SS变量 143
7.5 流程控制命令 144
7.6 小结 146
8.1 CGI是什么 147
第8章 CGI配置 147
8.1.1 CGI的输入和输出 148
8.1.2 输入数据的解码 152
8.2 Apache对CGI的支持 153
8.2.1 服务器变量 153
8.2.2 客户请求变量 154
8.3 为CGI配置Apache 158
8.3.1 给CGI程序目录创建别名 158
8.3.2 选择特定的CGI文件扩展名 159
8.3.3 允许用户访问cgi-bin 160
8.3.4 使用AddType命令创建新的CGI扩展名 162
8.4 运行CGI程序 162
8.4.1 简单的CGI程序 163
8.4.2 一个有用的CGI脚本 164
8.4.3 简单的应用程序 176
8.5 在Apache中调试CGI程序 186
8.4.4 用于Perl的广泛使用的CGI模块 186
8.5.1 ScripLog 187
8.5.2 ScripLogLength 187
8.5.3 ScriptLogBuffer 187
8.6 小结 188
第9章 FastCGI 189
9.1 作为新选择的FastCGI 189
9.2 FastCGI的效益 191
9.2.1 通过缓存取得高性能 191
9.2.2 通过分布式应用程序调节系统规模 192
9.3 理解FastCGI 193
9.4 FastCGI应用程序的基本结构 195
9.5 FastCGI应用程序的不同类型 196
9.6 从CGI转换到FastCGI 196
9.7 用于Apache的FastCGI 200
9.7.1 AppClass命令 201
9.7.2 ExternalAppClass命令 202
9.7.3 FastCgilpcDir命令 203
9.8 将mod_fastcgi编译到Apache中 203
9.9 配置文件例子 205
9.10 小结 207
第三部分 安全机制 208
第10章 基本认证 208
10.1 基于主机的认证过程 209
10.1.1 allow命令 209
10.1.2 deny命令 210
10.1.3 order命令 210
10.2 基于HTTP认证过程 212
10.2.1 使用标准的mod_auth模块 214
10.2.2 使用mod_auth_dbm模块 220
10.2.3 使用mod_auth_db 224
10.2.4 使用mod_auth_msql模块 225
10.2.5 使用mod_auth_anon模块 228
10.2.6 使用mod_auth_external模块 230
10.3 摘要认证 238
10.4 小结 238
第11章 服务器状态和日志 239
11.1 监视Apache 239
11.1.1 访问配置信息 239
11.1.2 允许使用状态页 240
11.2 建立日志文件 243
11.2.1 TransferLog命令 244
11.2.2 LogFormat命令 245
11.2.3 CustomLog命令 245
11.2.4 CookieLog命令 245
11.3 定制日志文件 246
11.4 建立多个日志文件 247
11.5.2 存储引用者信息 248
11.5 存储特殊信息 248
11.5.1 存储用户代理信息 248
11.5.3 存储cookie 249
11.6 使用错误日志 251
11.7 分析日志文件 253
11.8 日志维护 254
11.8.1 使用rotatelog 254
11.8.2 使用logrotate 255
11.9 小结 255
第12章 Web服务器的安全 256
12.1 理解Web的安全需求 256
12.2 安全检查点 257
12.2.1你的网络 258
12.2.2 操作系统 260
12.2.3 Web服务器软件 260
12.2.4 内容 262
12.3 CGI风险及解决办法 264
12.3.1 预防用户输入带来的风险 264
12.3.2 用wrapper减少CGI风险 271
12.4 SSI的风险及解决方法 276
12.5 基本HTTP认证的风险 277
12.6 安全策略考虑 277
12.6.1 记录每一件事 277
12.6.2 维护Web站点的可信的拷贝 277
12.6.3 从Web主机控制台管理站点 278
12.6.4 密切关注公用域CGI应用程序 278
12.6.5 比较内容 278
12.7 有希望吗 279
12.8 小结 279
13.1 理解mod_ Perl 280
第13章 Apache中的Perl 280
第四部分 实现高级特征 280
13.2 安装mod_Perl 281
13.2.1 安装的要求 282
13.2.2 编译和安装mod_ Perl 282
13.3 通过mod_ Perl运行Perl CGI脚本 283
13.4 移植Perl CGI脚本的问题 285
13.5 为mod_ Perl写PerI模块 286
13.5.1 使用CGI.pm和CGI::*模块 288
13.5.2 使用Apache DB/DBM 认证模块 288
13.6 Server Side Include和mod_ Perl的集成 290
13.7 使用Perl配置Apache 290
13.8 使用mod_ Perl的特殊问题 294
13.8.1 内存的使用 294
13.9 其他用于Apache的嵌入Perl 295
13.8.2 安全问题 295
13.10小结 298
第14章 Apache中的代理服务器 299
14.1 理解代理服务器 299
14.1.1 前向代理服务器 299
14.1.2 逆向代理服务器 300
14.2 谁应当使用代理服务器 301
14.3 Apache用作代理服务器 301
14.3.1 ProxyRequests 302
14.3.2 ProxyRemote 302
14.3.3 ProxyPass 302
14.3.4 ProxyBlock 303
14.3.5 NoProxy 303
14.3.6 ProxyDomain 303
14.3.8 CatcheSize 304
14.3.9 CatcheGcInterval 304
14.3.7 CacheRoot 304
14.3.10 CacheMaxExpire 305
14.3.11 CacheLastModifiedFactor 305
14.3.12 CacheDirLength 305
14.3.13 CacheDirLevels 306
14.3.14 CacheDefaultExpire 306
14.3.15 NoCache 306
14.4 配置代理服务器 306
14.4.1 将私有IP网连到互联网 307
14.4.2 远程Web站点的缓冲存信者 307
14.4.3 建立Web站点的镜像 309
14.5 设置Web浏览器 310
14.6 Web浏览器的自动代理配置 312
14.6.1 只用于远程URL请求的代理服务器 316
14.6.2 使用多个代理服务器 317
14.7 小结 320
第15章 Apache的安全Socket层 321
15.1 SSL的基础:加密 321
15.1.1 对称加密 321
15.1.2 不对称加密 323
15.2 理解SSL 323
15.3 Apache-SSL 325
15.3.1 建立SSLeay 325
15.3.2 建立Apache-SSL 326
15.3.3 创建临时证书 327
15.3.4 配置Apache-SSL的命令 327
15.3.5 为Apache-SSL配置Apache 329
15.3.6 测试安全服务器 333
15.3.7 得到由CA签署的证书 337
15.4 Stronghold 337
15.4.1 安装Stronghold 338
15.4.2 使用基于Web的配置管理软件 340
15.4.3 取得由CA签署的证书 342
15.4.4 建立专用的证书颁发机构 343
15.5 小结 348
第16章 重写URL 349
16.1 Apache的URL重写引擎 349
16.1.1 RewriteEngine 351
16.1.2 RewriteOptions 352
16.1.3 RewriteRule 352
16.1.4 RewriteCond 354
16.1.5 RewriteMap 355
16.1.6 RewriteBase 356
16.1.7 RewriteLog 356
16.1.8 RewriteLogLevel 356
16.1.9 RewriteLock 357
16.2 URL格式 357
16.2.1 把请求的URL扩展为规范的URL 357
16.2.2 把用户主目录重新定向给新的Web服务器 358
16.2.3 在多个目录中查找一页 359
16.2.4 设置基于URL的环境变量 360
16.2.5 创建www.username.host.com站点 360
16.2.6 把访问失败的URL重新定向给另一个Web服务器 362
16.2.7 创建一个访问多路复用器 362
16.2.8 创建基于时间的URL 364
16.3 内容处理 364
16.3.1 使URL向后兼容 364
16.3.2 创建传送的内容与浏览器类型有关的URL 365
16.3.3 为CGI网关创建HTML 365
16.4 访问限制 365
16.4.1 阻塞机器人 366
16.4.2 创建基于HTTP引用的URL转向功能 366
16.5 小结 366
17.1 Apache计算机 367
第五部分 使用Apache的现在和将来 367
第17章 性能提示 367
17.2 软件 369
17.2.1 少使用DNS 371
17.2.2 减少磁盘I/O 371
17.2.3 限制子进程数 371
17.3 网络 372
17.3.1 内部Internet Web服务器 372
17.3.2 ISP集合Web服务器 374
17.3.3 内联网Web服务器 374
17.3.4 分布式Web网络 375
17.4 内容 380
17.5 人员 381
17.6 小结 381
18.1 创建Web周期 382
第18章 运行完善的Web站点 382
18.2 把Web周期付诸实施 384
18.2.1 为实施Web周期进行设置 384
18.2.2 实现Web周期 387
18.3 维护Web 390
18.3.1 联机备份 390
18.3.2 脱机备份 391
18.4 标准化指导原则 391
18.4.1 HTML文档开发策略 391
18.4.2 动态应用的开发策略 393
18.5 使用用户友好的界面 394
18.5.1 使站点易于导航 394
18.5.2 创建有吸引力的设计 395
18.5.3 去掉意义含糊不清的错误消息 396
18.5.4 测试Web GUI 397
18.7 小结 399
18.6 宣传Web站点的方法 399
第19章 使用Apache组建Web网络 400
19.1 什么是Web网络 400
19.2 理解需求 401
19.3 设计Web网络 404
19.4 选择硬件和软件 406
19.4.1 建立PC服务器 406
19.4.2 选择操作系统 407
19.4.3 选择Web服务器 407
19.5 建立系统 408
19.5.1 磁盘分区 408
19.5.2 安装Linux 408
19.5.3 配置网络 409
19.6 设置DNS服务器 410
19.6.1 使用rdist分发文件 423
19.6.2 在内部网络上使用NFS 426
19.7 Apache服务器配置 429
19.8 客户的FTP用户帐号 430
19.9 测试新系统 431
19.10 投入正常运行 432
19.11 未来的可能性 433
19.12 小结 434
第20章 用于Windows 95/NT的Apache 435
20.1 将Apache移植到Windows所面对的问题 435
20.2 如何获取Apache的Windows版 436
20.3 在Windows上安装Apache 436
20.3.1 在Windows 95上运行Apache 439
20.3.2 在Windows NT上运行Apache作为一项服务 440
20.4 在Windows上配置Apache 441
20.5 Windows版专用的Apache命令 442
20.5.3 ThreadsPerChild 443
20.5.2 LoadFile 443
20.5.1 LoadModule 443
20.6 小结 444
附录A HTTP/1.1状态码 445
A.1 信息状态码(100~199) 445
A.2 客户请求成功(200~299) 445
A.3 对请求进行了重新定向(300~399) 446
A.4 客户请求不完备(400~499) 446
A.5 服务器错误(500~599) 447
附录B 规则表达式基础 449
附录C 可用于Apache的Internet资源 451
C.1 自由资源 451
C.1.1 Web站点 451
C.2 Usenet新闻组 451
C.2.1 与Web服务器有关的新闻组 451
C.2.3 与Web浏览器有关的新闻组 452
C.2.2 与创作Web页有关的新闻组 452
C.2.4 发布新闻组 453
C.2.5 其他的WWW新闻组 453
C.2.6 Perl新闻组 453
C.3 用于Usenet新闻组的WWW资源 453
C.3.1 邮递表 453
C.4 商业资源 454
C.5 其他有关的资源 454
附录D CD-ROM上有什么 455
D.1 Apache软件 455
D.2 Perl软件 456
D.3 Web服务器日志分析程序 457
D.4 有用的实用程序 457
D.5 协议和标准文档 458
CD-ROM安装说明 459