第1章 关于Apache 1
1.1 Apache 1.3.x介绍 1
1.2 Apache 2.0/2.2介绍 2
1.3 Apache 2 3/2.4介绍 3
第2章Apache的安装 6
2.1使用二进制程序安装 6
2.1.1使用rpm或deb格式安装 6
2.1.2使用已经编译好的包安装 8
2.2使用源代码安装Apache 11
2.2.1编译安装Apache 12
2.2.2使用Apache Toolbox编译 21
2.3常见问题解答(FAQ) 23
2.3.1常用的优化参数 23
2.3.2关于-O参数的设置 24
2.3.3不知道该使用哪种参数进行优化 25
2.3.4 make install出错 25
2.3.5安装mod deflate模块出错 25
2.3.6 suEXEC模块的安装 26
2.3.7无法安装mod_authnz_ldap模块 27
第3章 运行、监控Apache 29
3.1运行Apache 29
3.1.1手动启动Apache服务器 29
3.1.2自动启动Apache服务器 30
3.1.3停止Apache服务器 35
3.1.4使用apachectl程序控制Apache 36
3.1.5运行多个Apache服务器 37
3.1.6使用〈IfDefine〉容器实现不同的配置 37
3.1.7 httpd命令行参数 38
3.2监控Apache 40
3.2.1 Apache自带的Web监视器 41
3.2.2使用第三方的工具来监控Apache 46
3.3常见问题解答(FAQ) 49
3.3.1 Apache启动后通过浏览器访问提示:“您没有权限访问此服务器上的/” 49
3.3.2启动Apache时提示的常见错误 50
第4章Apache模块 51
4.1模块的类型 52
4.2使用apxs编译安装模块 52
4.3使用静态链接模块 56
4.4使用动态链接模块 56
4.4.1 Apache 2.x动态链接模块使用方法 57
4.4.2 Apache 1.3.x动态链接模块使用方法 58
4.5为Apache增加新模块 59
4.5.1 Perl 59
4.5.2 PHP 62
4.6常见问题解答(FAQ) 64
4.6.1以静态的方式编译PHP到Apache 1.3.x中 64
4.6.2能否将PHP静态编译到Apache 2.x中 64
4.6.3如何测试已经安装的PHP 64
4.6.4编译了mod_perl模块,但是Apache无法加载它 65
4.6.5编译mod_perl模块出错 66
4.6.6如何测试Apache的CGI是否支持Perl 66
4.6.7如何测试mod_perl已经启动 67
4.6.8测试mod_perl是否工作 68
4.6.9使用mod_perl来加速Perl脚本 69
第5章 配置Apache 71
5.1 http.conf文件 72
5.1.1主服务器部分 74
5.1.2容器部分 78
5.1.3服务器扩展部分 81
5.2.htaccess文件 82
5.2.1映射用户到目录 83
5.2.2目录的索引 85
5.2.3 GUI配置工具 90
5.3常见问题解答( FAQ) 95
5.3.1使用httpd—D来指定ServerRoot目录 95
5.3.2 Port和Bindaddress指令 96
5.3.3容器的处理顺序 96
5.3.4目录、文件、网络容器的安全问题 97
5.3.5关于Perl和PHP指令 98
5.3.6.htaccess文件中写入了配置指令没有生效 98
5.3.7使用suEXEC 98
5.3.8将目录放入高速缓存中 99
第6章 虚拟主机配置 100
6.1基于名字的虚拟主机 101
6.2基于IP的虚拟主机 102
6.3动态虚拟主机 104
6.3.1使用vhost alias module模块建立动态虚拟主机 104
6.3.2使用rewrite_ module模块建立大量的虚拟主机 106
6.4常见问题解答(FAQ) 107
6.4.1使用IPv6的地址配置虚拟主机 107
6.4.2取消默认主机 107
6.4.3使用ServerAlias指令定义的网站别名无法访问 107
6.4.4如何支持古老的浏览器 107
6.4.5为虚拟主机使用日志 108
6.4.6合并虚拟主机日志 108
6.4.7在多个地址上显示同样的内容 109
6.4.8让虚拟主机支持SSL 109
6.4.9使用虚拟主机的建议 110
第7章CGI、 FastCGI、 SSI 111
7.1 CGI 111
7.1.1 mod_cgi模块 111
7.1.2 mod actions模块 113
7.1.3 CGI环境变量 114
7.1.4修改CGI、SSI环境变量 115
7.1.5 mod cgid模块 116
7.2 FastCGI 117
7.2.1安装mod_ fcgid 118
7.2.2配置mod fcgid 119
7.2.3 mod_fcgid模块指令 122
7.3 SSI 123
7.3.1启用SSI支持 123
7.3.2 SSI标记符 124
7.3.3流控制 128
7.3.4其他SSI指令 129
7.4常见问题解答(FAQ) 129
7.4.1很多人使用Perl来编写CGI脚本,我是否也需要使用Perl 129
7.4.2使用fixconf sed替换指令时遇到错误 129
7.4.3为什么Perl脚本无法执行 130
7.4.4安装了Perl的FCGI模块,但脚本还是无法运行 130
7.4.5为什么Apache服务器没有为SSI页面发送最后的修改日期 131
7.4.6让Apache对特定的HTML类型文件进行SSI解析 131
7.4.7 Apache所带的SSI功能太少了,如何得到更多功能的SSI 131
7.4.8不在由ScriptAlias所定义的目录下使用CGI脚本 131
7.4.9如何在Windows系统中使用CGI 132
7.4.10为特定的文件调用CGI处理器 132
第8章 别名和重定向 133
8.1 mod_ alias模块 133
8.1.1别名的定义 133
8.1.2重定向的定义 135
8.2 mod rewrite模块 137
8.2.1工作流程 137
8.2.2规则集 138
8.2.3重写指令 139
8.3常见问题解答(FAQ) 148
8.3.1如何提高mod_rewrite模块的工作效率 148
8.3.2如何完全禁止重写日志 148
8.3.3目录级改写中的查询字符串 148
8.3.4让用户首先访问某一目录 148
8.3.5规范化URL 148
8.3.6将多个URL重定向到一个位置 149
8.3.7将多个CGI目录重定向到一个CGI目录中 149
8.3.8无视URL中所有的大小写区分 149
8.3.9将部分地址的URL重定向到SSL服务器上 149
第9章 代理服务器与缓存 150
9.1代理服务器 150
9.1.1正向代理 151
9.1.2逆向代理 151
9.1.3 Apache的代理模块 152
9.1.4 Apache的其他代理模块 157
9.2缓存模块 157
9.2.1 mod_ cache模块 157
9.2.2 mod_mem cache模块 159
9.2.3 mod_disk_cache模块 160
9.2.4维护磁盘缓存区 162
9.2.5 mod_file_cache的文件缓存支持 163
9.3常见问题解答(FAQ) 164
9.3.1为什么需要使用缓存模块 164
9.3.2缓存多个文件 164
9.3.3缓存调用了CGI程序的页面,但还是很慢 165
9.3.4使用其他服务器作为图片服务器 165
9.3.5禁止代理服务器转发电子邮件 165
9.3.6在代理服务器中禁止所指定的网站 166
9.3.7 htcacheclean的使用 166
第10章 数据库连接管理 167
10.1 mod_ dbd模块 167
10.2 mod_ldap模块 171
10.3常见问题解答(FAQ) 174
10.3.1在启动Apache时遇到DBD:Can’t load driver file apr dbd_pgsql.so错误 174
10.3.2出现DBD: Can’t connect to pgsql, FATAL:sorry, too many clients already/n错误 174
10.3.3对LDAP缓冲区的监控 174
第11章Apache日志控制 175
11.1错误日志 175
11.1.1 LogLevel指令:指定记录错误级别 175
11.1.2 ErrorLog指令:定义错误文件的位置 177
11.2访问日志 178
11.2.1普通日志(公共日志Common Log Format、CLF) 178
11.2.2扩充普通日志(复合日志Extended Log File Format、 ECLF) 179
11.2.3 LogFormat指令 179
11.2.4 CustomLog指令 181
11.2.5 TransferLog指令 182
11.2.6 BufferedLogs指令 183
11.3日志的循环 183
11.3.1手动循环 183
11.3.2自动循环 184
11.4使用syslog来控制、存储日志 184
11.5跟踪用户会话 185
11.6日志分析软件 188
11.6.1 Webalizer 188
11.6.2 Awstats 190
11.6.3 Windows服务器安全分析系统 192
11.7常见问题解答(FAQ) 194
11.7.1一些常见的格式串 194
11.7.2条件记录日志 194
11.7.3多个日志文件 195
11.7.4在虚拟主机中进行日志记录 195
11.7.5不记录本地主机上的图片请求 195
11.7.6按时间记录日志 196
11.7.7在日志中记录 Cookie 196
11.7.8在日志中记录引用页面 196
11.7.9在日志中记录客户浏览器类型 196
11.7.10在负载均衡时Apache无法保持会话 197
第12章 性能调整及服务器安全 198
12.1性能调整 198
12.1.1多路处理模块(MPM) 198
12.1.2 Apache所提供的性能调整指令 202
12.1.3使用XCache加速PHP 203
12.1.4 AB测试服务器性能 205
12.1.5网站架构演变 208
12.2服务器安全 208
12.2.1 Apache所提供的安全控制 210
12.2.2常用的检测工具 211
12.3常见问题解答(FAQ) 217
12.3.1 Apache加速器(khttpd) 217
12.3.2 Apache服务器安全检查 217
12.3.3其他的PHP加速程序 218
12.3.4禁用DNS查询 218
12.3.5只在指定的目录中使用.htaccess文件 218
12.3.6停用网页内容协商 218
12.3.7将目录列表存入缓存区中 219
12.3.8使用DNS进行负载均衡 219
12.3.9计算单个线程内存消耗量来设置线程数量 219
第13章 身份认证 220
13.1 mod_ authz_ host模块 221
13.2认证类型模块 223
13.2.1 mod_ auth_ basic模块 223
13.2.2 mod_ auth digest模块 224
13.3认证支持模块 225
13.3.1 mod_authn_alias模块 225
13.3.2 mod_authn_anon模块 226
13.3.3 mod authn_ dbd模块 228
13.3.4 mod authn_ dbm模块 229
13.3.5 mod_authn_default模块 229
13.3.6 mod_authn_file模块 229
13.4授权支持模块 230
13.4.1 mod_ authz_ dbm模块 230
13.4.2 mod authz_groupfile模块 231
13.4.3 mod_ authz_ owner模块 232
13.4.4 mod_ authz user模块 233
13.4.5 mod authz_ default模块 233
13.5 mod_authnz_ldap模块 233
13.5.1使用mod_authnz_ldap模块来进行认证 234
13.5.2使用 mod_ authnz_ldap模块来进行授权 236
13.6常见问题解答(FAQ) 238
13.6.1使用mod_ authn_ file模块禁止用户控制时服务器反应速度很慢 238
13.6.2使用系统账号进行验证 238
13.6.3 Microsoft Intemet Explorer 6无法使用摘要认证 239
13.6.4获得通过验证的用户名 239
13.6.5针对特定用户源的用户进行身份认证 239
13.6.6建立基本认证使用的密码文件 240
13.6.7建立摘要认证的密码文件 240
13.6.8建立数据库格式的密码文件 241
13.6.9允许或禁止某一目录的访问 242
13.6.10根据用户身份限制访问的方法 242
第14章SSL(安全套接层协议) 243
14.1 SSL的实现方式 243
14.1.1安装mod ssl 244
14.1.2签发证书 244
14.1.3配置Apache启用SSL功能 255
14.1.4配置Apache使用客户证书进行认证 259
14.1.5 mos ssl指令说明 259
14.2常见问题解答(FAQ) 263
14.2.1 mod ssl支持哪些SSL加密算法 263
14.2.2 OpenSSL支持哪些加密算法 263
14.2.3使用OpenSSL源代码安装OpenSSL 264
14.2.4使用二进制方式安装OpenSSL 265
14.2.5 OpenSSL命令的常见用法 265
14.2.6如何查看更多的关于服务器上的SSL信息 266
第15章 元信息与内容协商 267
15.1元信息 267
15.1.1 MIME类型(内容类型) 268
15.1.2 MIME编码方式 271
15.1.3 MIME语言 271
15.1.4 MIME字符集 272
15.2内容协商 273
15.2.1使用类型映射( type-map)进行内容协商 275
15.2.2使用MultiViews查询进行内容协商 277
15.2.3浏览器协商缓存 277
15.3常见问题解答(FAQ) 278
15.3.1如何向客户端浏览传输默认的语言文件 278
15.3.2如何指定一个新的mime.types文件位置 278
15.3.3在使用语言协商时总是无法获得正确的文件 278
15.3.4类型映射文件说明 279
附录A Apache编译参数翻译 281
附录B Apache模块及模块配置指令列表 287
附录C HTTP响应代码 305