第一部分 开端 1
第一章 Apache简介 1
1.1 什么是WWW 1
1.1.1 重要的基本概念 2
1.1.2 Web的特点 2
1.2 什么是HTTP 3
1.2.1 HTTP的特点 3
1.2.2 HTTP的通信交换过程 4
1.2.3 HTTP的请求和响应消息格式 4
4.7 认证与安全命令 5
1.3 什么是Apache 5
1.4 Apache Server的优点和特征 6
1.5 Apache的结构 8
1.6 面对的挑战 8
2.2 编译和安装Apache 9
第二章 编译及安装Apache 9
2.1 下载Apache 9
2.2.1 配置选项 10
2.2.2 运行Configure 11
2.2.4 安装Apache 12
2.2.3 编译Apache 12
2.3 保护Apache目录 13
第三章 配置与运行Apache 14
3.1 Apache的配置文件 14
3.1.1 conf/httpd.conf 14
3.1.2 conf/srm.conf 14
3.1.3 conf/access.conf 18
3.2启动和停止Apache 19
3.2.1 独立的服务器 19
3.2.2 由inetd运行的Apache服务器 20
3.3 测试Apache服务器 21
3.4 命令行参数 22
第四章 Apache的核心配置 24
4.1 Apache命令的适用范围 24
4.1.1 服务器配置的使用范围 24
4.1.2 容器的使用范围 24
4.1.3 针对目录的使用范围 25
4.2 一般的配置命令 25
4.2.1 AccessConfig 25
4.2.2 AccessFileName 26
4.2.3 BindAddress 26
4.2.6 DocumentRoot 27
4.2.4 CoreDumpDirectory 27
4.2.5 DefaultType 27
4.2.7 ErrorDocument 28
4.2.8 Group 29
4.2.9
4.2.10 Include 29
4.2.11 Listen 29
4.2.12 Options 30
4.2.13 Port 31
4.2.14 ResourceConfig 32
4.2.15 ServerAdmin 32
4.2.18 User 33
4.2.16 ServerName 33
4.2.17 ServerRoot 33
4.3.1 控制Apache进程 34
4.3 性能和资源配置命令 34
4.3.2 建立持续连接 37
4.3.3 控制系统资源 38
4.3.4 动态装卸模块 39
4.4 标准的容器命令 39
4.4.1
4.4.2
4.4.3
4.4.4
4.4.5
4.4.6
4.5.2 NameVirtualHost 42
4.5 虚拟主机命令 42
4.5.1
4.5.3 ServerAlias 43
4.5.4 ServerPath 43
4.6 日志命令 44
4.6.1 ErrorLog 44
4.6.2 LockFile 44
4.6.3 PidFile 44
4.6.4 ScoreBoardFile 45
4.7.1 AllowOverride 45
4.7.5 IdentityCheck 46
4.7.4 HostNameLookups 46
4.7.3 AuthType 46
4.7.2 AuthName 46
4.7.6
4.7.7 require 47
4.7.8 Satisfy 48
第五章 Apache标准模块 49
5.1 mod_access模块 49
5.1.1 allow 49
5.1.2 deny 50
5.1.3 order 50
5.2.1 Action 51
5.2.2 Script 51
5.2 mod_actions 51
5.3 mod_alias模块 52
5.3.1 Alias 52
5.3.2 AlaisMatch 53
5.3.3 Redirect 53
5.3.4 RedirectMatch 53
5.3.5 RedirectTemp 54
5.3.6 RedirectPermanent 54
5.3.7 ScriptAlias 54
5.3.8 ScriptAliasMatch 55
5.4 mod_asis模块 55
5.4.1 目的 55
5.4.2 用法 55
5.5.1 AuthGroupFile 56
5.5 mod_auth*模块 56
5.5.2 AuthUserFile 57
5.6 mod_auth_anon模块 57
5.8 mod_auth_external模块 58
5.9 mod_autoindex模块 59
5.9.1 AddAlt 59
5.9.2 AddAltByEncoding 59
5.9.3 AddAltByType 59
5.9.4 AddDescription 60
5.9.5 AddIcon 60
5.9.6 AddIconByEncoding 60
5.9.9 DirectoryIndex 61
5.9.7 AddIconByType 61
5.9.8 DefaultIcon 61
5.9.10 FancyIndexing 62
5.9.11 HeaderName 62
5.9.12 IndexIgnore 62
5.9.13 IndexOptions 63
5.9.14 ReadmeName 63
5.10 mod_cgi模块 64
5.10.1 摘要 64
5.10.2 CGI环境变量 64
5.11 mod_dir模块 64
5.12.1 PassEnv 65
5.12.2 SetEnv 65
5.12 mod_env模块 65
5.12.3 UnsetEnv 66
5.13 mod_imap模块 66
5.13.1 摘要 66
5.13.2 新特色 66
5.13.3 配置指令 66
5.14 mod_include模块 68
5.14.1 SPML-包含文件格式 68
5.14.2 内含的变量 69
5.15.1 摘要 70
5.15.2 日志文格格式 70
5.15 mod_log_config模块 70
5.14.3 XBitHack 70
5.15.3 使用多个日志文件 72
5.15.4 指令 72
5.16 mod_mime模块 73
5.16.1 摘要 73
5.16.2 AddEncoding 74
5.16.3 AddLanguage 74
5.16.4 AddType 74
5.16.5 TypesConfig 75
5.17 mod_negotiation模块 75
5.17.1 摘要 75
5.17.2 LanguagePriority 76
5.18 mod_setenvif模块 76
5.18.3 SetEnvlf 77
5.18.4 SetEnvlfNoCase 77
5.18.1 BrowserMatch 77
5.18.2 BrowserMatchNoCase 77
5.19 mod_unique_id模块 78
5.20 mod_userdir模块 78
第六章 Apache扩充模块 79
6.1 mod_auth_dbm模块 79
6.1.1 AuthDbmGroupFile 80
6.1.2 AuthDBMUserFile 81
6.2.1 AuthDigestFile 81
6.2.2 AuthDigestGroupFile 81
6.2.4 AuthDigestNonceLifetime 82
6.2.5 AuthDigestNonceFormat 82
6.2.3 AuthDiestQop 82
6.2.6 AuthDigestNcCheck 83
6.2.7 AuthDigestAlgorithm 83
6.2.8 AuthDigestDomain 83
6.3 mod_cern_meta模块 83
6.3.1 MetaFiles 84
6.3.2 MetaDir 84
6.3.3 Metasuffix 84
6.4 mod_cookies模块 84
6.5 mod_digest模块 85
6.6 mod_dld模块 85
6.6.1 摘要 85
6.6.2 LoadFile 85
6.6.3 LoadModule 85
6.8 mod_expires模块 86
6.7 mod_example模块 86
6.8.1 ExpiresActive 87
6.8.2 ExpiresByType 87
6.8.3 ExpiresDefault 87
6.9 mod_headers模块 88
6.10 mod_info模块 88
6.11 mod_log_agent模块 89
6.12 mod_log_referer模块 90
6.12.1 日志文件的格式 90
6.12.2 RefererIgnore 90
6.12.3 RefererLog 90
6.13.2 MmapFile 91
6.14.1 ProxyRequests 91
6.14 mod_Proxy模块 91
6.13.1 摘要 91
6.13 mod_mmap_static模块 91
6.14.2 ProxyRemote 92
6.14.3 ProxyPass 92
6.14.4 ProxyPassReverse 93
6.14.5 ProxyBlock 93
6.14.6 NoProxy 94
6.14.7 ProxyDomain 94
6.14.8 ProxyReceiveBufferSize 94
6.14.9 CatheRoot 94
6.14.10 CacheSize 95
6.14.11 CacheGcInterval 95
6.14.12 CacheMaxExpire 95
6.14.13 CacheLastModifiedFactor 95
6.14.16 CacheDefaultExpire 96
6.14.15 CacheDirLevels 96
6.14.14 CacheDirLenth 96
6.14.17 CacheForceCompletion 97
6.14.18 NoCache 97
6.15 Mod_rewrite模块 97
6.15.1 RewriteEngine 98
6.15.2 RewriteOptions 98
6.15.3 RewriteRule 99
6.15.4 RewriteCond 100
6.15.5 RewriteMap 101
6.15.6 RewriteBase 102
6.15.7 RewriteLog 102
6.16 mod_so模块 103
6.16.1 摘要 103
6.15.9 RewriteLock 103
6.15.8 RewriteLogLevel 103
6.16.2 指令 104
6.16.3 为Windows创建DLL模块 104
6.17 mod_speling模块 105
6.18 mod_status模块 105
6.19 mod_usertrack模块 106
6.19.1 Logging 106
6.19.2 指令 106
6.20 mod_vhost_alias模块 107
6.20.1 目录名改写 107
6.20.2 指令 108
7.1.1 基于IP的虚拟主机的DNS配置 109
第七章 虚拟主机的管理 109
7.1 虚拟站点的DNS配置 109
7.1.2 基于名称的虚拟主机的DNS配置 110
7.2 虚拟站点的Apache配置 111
7.2.1 设置多个Apache守护进程 112
7.2.2 设置单独的Apache 113
7.3 建立虚拟主机的限制因素 114
第二部分 服务器端包含指令和脚本 117
第八章 Apache的服务器端包含指令 117
8.1 什么是SSI 117
8.2 Apache的SSI配置 118
8.2.1 为SSI HTML页添加新的句柄 119
8.2.3 启动目录的SSI解析 120
8.2.2 为SSIHTML页添加新的文件扩展名 120
8.3 SSI指令的使用 121
8.3.1 config 121
8.3.2 echo 124
8.3.3 exec 124
8.3.4 fsize 127
8.3.5 flastmod 127
8.3.6 include 128
8.3.7 Printenv 128
8.3.8 set 129
8.4 SSI变量 129
8.5 流程控制命令 130
9.1.1 CGI简介 133
9.1 什么是CGI 133
第九章 CGI配置 133
9.1.2 CGI的输入输出 134
9.2 Apache对CGI的支持 137
9.2.2 客户请求专用环境变量 138
9.3.1 创建CGI脚本目录 142
9.3.2 选择特定的CGI文件扩展名 144
9.3.3 允许用户访问cgi-bin 145
9.3.4 使用AddType创建新的CGI扩展名 147
9.4 运行CGI 148
9.4.1 一个有用的CGI脚本 148
9.4.2 用于Perl的CGI模块 149
9.5 在Apache中调试CGI 150
9.5.1 ScriptLog 150
9.5.3 ScriptLogBuffer 151
9.5.2 ScriptLogLength 151
第十章 FastCGI 152
10.1 认识FastCGI 152
10.1.1 为什么使用FastCGI 152
10.1.2 FastCGI的优势 153
10.1.3 理解FastCGI 153
10.2 获得FastCGI并编译进Apache 155
10.2.1 获得FastCGI及相关组件 155
10.2.2 将FastCGI编译进Apache 155
10.3 从CGI转换到FastCGI 156
10.4 FastCGI的Apache配置 159
10.4.1 AddClass指令 159
10.4.3 FastCgiIpcDir指令 160
10.4.2 ExternalAddClss指令 160
10.5 基于Perl的FastCGI脚本的运行 162
10.6 配置文件例子 164
第十一章 将Perl嵌入Apache 168
11.1 Perl简介 168
11.2 mod_Perl模块的安装 168
11.3 使用Perl配置Apache 170
11.4 运行PerlCGI脚本 174
11.5 导出PerlCGI脚本的问题 177
11.6 Perl模块的编写 178
11.6.1 CGI.pm及CGI::*模块的使用 180
11.6.2 Apache DB/DBM认证模块的使用 180
11.7 服务器端包含与mod_perl的集成 181
11.8.1 内存的使用 182
11.8 几个特殊的问题 182
11.8.2 安全性问题 184
第十二章 Apache JServ和PHP 185
12.1 Apache JServ 185
12.1.1 安装Apache JServ 185
12.1.2 Apache JServ的特征 188
12.1.3 JSP简介 188
12.2 PHP 190
12.2.1 什么是PHP 190
12.2.2 PHP的特性 190
12.2.3 PHP的获得、安装和配置 190
13.1.1 什么是SMB 193
13.1 SMB的简介 193
第十三章 Samba Server 193
第三部分 Samba和Sendmail 193
13.1.2 Microsoft Network 194
13.2 Samba的安装与设定 196
13.2.1 安装Samba 196
13.2.2 安装SWAT 197
13.3 通过SWAT对Samba进行设定 197
13.3.1 Base Options 198
13.3.2 Security Options 198
13.3.3 Printing Options 200
13.4 编辑Samba的配置文件 201
13.6 常见问题 203
13.5.2 Windows主机共享Linux主机的资源 203
13.5.1 Linux主机共享Windows主机的资源 203
13.5 检测 203
第十四章 Sendmail 205
14.1 什么是Sendmail 205
14.2 获得和安装Sendmail 205
14.3 Sendmail的配置 206
14.3.1 文件与指令 206
14.3.2 Sendmail.cf 206
14.3.3 使用m4 212
14.3.4 邮件队列(Mail Queue) 213
14.3.5 Sendmail Anti-relay 214
14.4 在虚拟主机中设定Sendmail 214
14.4.1 同一台机器收不同域的信件 214
14.4.3 修改虚拟送信人数据库 215
14.4.2 修改虚拟收信人数据库 215
14.6 forward转寄文件 216
14.5 Aliases别名文件 216
14.7 Masquerading 217
14.8 实现POP3 217
第四部分 Apache的管理和安全 219
第十五章 WWW认证 219
15.1 基于主机的认证 219
15.1.1 allow 220
15.1.2 deny 220
15.1.3 order 220
15.2 基于HTTP的认证 220
15.2.3 mod_auth_db模块 221
15.2.4 mod_auth_msql模块 221
15.2.2 mod_auth_dbm模块 221
15.2.1 标准的mod_auth模块 221
15.2.5 mod_auth_external模块 224
15.3 摘要认证 225
第十六章 服务器的状态和日志 226
16.1 通过Web监视Apache 226
16.1.1 访问服务器的配置信息 226
16.1.2 监视服务器的状态 227
16.2 建立服务器日志文件 229
16.3 定制服务器日志文件 230
16.4 生成多个日志文件 231
16.5 存储有关信息 231
16.5.3 存储cookies 232
16.5.2 存储引用者的信息 232
16.5.1 存储用户代理信息 232
16.6 使用错误日志 233
16.7 分析服务器日志文件 235
16.8 维护服务器日志文件 236
16.8.1 使用rotatelog 236
16.8.2 使用logrotate 236
第十七章 Web的安全性 238
17.1 理解Web的安全性 238
17.1.1 局域网 239
17.1.2 操作系统 239
17.1.3 Web服务器软件 239
17.1.4 Web内容 241
17.2 降低CGI风险 241
17.2.1 防止恶意用户对CGI应用程序的输入 242
17.2.2 防止嵌入在有害的用户输入中的系统调用 243
17.2.3 防止拒绝服务的攻击 248
17.2.4 使用封装来降低CGI风险 249
17.3 降低SSI风险 252
17.4 降低基于HTTP认证的风险 253
17.5 Web安全策略 253
第十八章 Apache的SSL 254
18.1 SSL简介 254
18.1.1 加密基础 254
18.1.2 什么是SSL 254
18.2 Apache的SSL解决方案 255
18.3 自由软件——Apache-SSL 255
18.3.2 配置和安装Apache-SSL 256
18.3.1 配置和安装SSLeay 256
18.3.3 取得数字证书 257
18.3.4 PGPkey 258
18.3.5 Apache-SSL指令 258
18.3.6 为Apache-SSL配置Apache 263
18.4 商业的Web Server——Stronghold 272
18.4.1 安装Stronghold 272
18.4.2 使用基于Web的配置管理软件 273
18.4.3 取得由CAS签署的证书 273
18.4.4 建立专用的证书 274
第十九章 Apache的代理服务器 277
19.1 配置和安装代理模块 277
19.3.1 将Intranet与Internet相连 278
19.3 配置代理服务器 278
19.2 代理模块的指令 278
19.3.2 远程Web站点的缓存 279
19.3.3 建立Web站点的镜像 281
19.4 Web浏览器的代理设置* 281
19.4.1 自动代理配置 281
19.4.2 只对远程URL请求使用代理服务 283
19.4.3 使用多个代理服务器 284
19.5 IP Masquerade 287
19.5.1 什么是IP Masquerade 287
19.5.2 IP Masquerade的安装 287
19.5.3 IP Masquerade 的设定 289
附录A 一个配置完成的httpd.conf文件 292
附录B 与Apache有关的Internet资源 316