目录
第1章 安装Nginx及第三方模块 1
1.1 使用包管理器安装Nginx 2
1.1.1 在Centos上安装Nginx 2
1.1.2 在Debian上安装Nginx 3
1.2 从源代码安装Nginx 3
1.2.1 准备编译环境 3
1.2.2 从源代码编译 4
1.2.3 为Web或者Mail服务器
配置Nginx 5
1.2.4 邮件代理的配置选项 6
1.2.5 指定路径的配置选项 6
1.3 配置SSL支持 7
1.4 使用各种模块 7
禁用不再使用的模块 9
1.5 查找并安装第三方模块 10
1.6 添加对Lua的支持 11
1.7 组合在一起 11
1.8 小结 13
第2章 配置指南 14
2.1 基本配置格式 14
2.2 Nginx全局配置参数 15
2.3 使用include文件 16
2.4 HTTP的server部分 17
2.4.1 客户端指令 17
2.4.2 文件I/O指令 18
2.4.3 Hash指令 19
2.4.4 Socket指令 19
2.4.5 示例配置文件 20
2.5 虚拟服务器部分 20
2.6 Locations—where,when,how 24
2.7 完整的示例配置文件 26
2.8 小结 27
第3章 使用mail模块 29
3.1 基本代理服务 29
3.1.1 mail的server配置部分 30
3.1.2 POP3服务 32
3.1.3 IMAP服务 33
3.1.4 SMTP服务 33
3.1.5 使用SSL/TLS 34
3.1.6 完整的mail示例 37
3.2 认证服务 38
3.3 与memcached结合 46
3.4 解释日志文件 48
3.5 操作系统限制 50
3.6 小结 51
第4章 Nginx作为反向代理 52
4.1 反向代理简介 53
4.2 代理模块 54
4.3 带有cookie的遗留应用程序 57
4.4 upstream模块 58
4.5 保持活动连接 59
4.6 上游服务器的类型 61
4.7 单个上游服务器 61
4.8 多个上游服务器 62
4.9 非HTTP型上游服务器 63
4.9.1 Memcached上游服务器 63
4.9.2 FastCGI上游服务器 64
4.9.3 SCGI上游服务器 65
4.9.4 uWSGI上游服务器 65
4.10 负载均衡 65
负载均衡算法 65
4.11 将if配置转换为一个更现代的
解释 66
4.12 使用错误文件处理上游服务器
问题 70
4.13 确定客户端真实的IP地址 72
4.14 小结 72
第5章 反向代理高级话题 73
5.1 安全隔离 74
5.1.1 使用SSL对流量进行加密 74
5.1.2 使用SSL进行客户端身份
验证 76
5.1.3 基于原始IP地址阻止流量 78
5.2 孤立应用程序组件的扩展 80
5.3 反向代理服务器的性能调优 83
5.3.1 缓冲数据 84
5.3.2 缓存数据 86
5.3.3 存储数据 90
5.3.4 压缩数据 91
5.4 小结 94
第6章 Nginx HTTP服务器 95
6.1 Nginx的系统架构 95
6.2 HTTP核心模块 96
6.2.1 server指令 97
6.2.2 Nginx中的日志 98
6.2.3 查找文件 101
6.2.4 域名解析 103
6.2.5 客户端交互 104
6.3 使用limit指令防止滥用 106
6.4 约束访问 110
6.5 流媒体文件 114
6.6 预定义变量 115
6.7 SPDY和HTTP/2 117
6.8 使用Nginx和PHP-FPM 118
6.9 一个Drupal的配置示例 121
6.9 将Nginx和uWSGI结合 129
一个Django的配置示例 129
6.10 小结 131
第7章 Nginx的开发 133
7.1 集成缓存 133
7.1.1 应用程序没有缓存 134
7.1.2 使用数据库缓存 135
7.1.3 使用文件系统做缓存 138
7.2 动态修改内容 141
7.2.1 使用addition模块 141
7.2.2 sub模块 142
7.2.3 xslt模块 143
7.3 使用服务器端包含SSI(Server
Side Include) 144
7.4 Nginx中的决策 146
7.5 创建安全链接 150
7.6 生成图像 152
7.7 跟踪网站访问者 155
7.8 防止意外代码执行 156
7.9 小结 157
第8章 在Nginx中集成Lua 159
8.1 ngx_lua模块 159
8.2 集成Lua 160
8.3 使用Lua记录日志 163
8.4 小结 163
第9章 故障排除技巧 164
9.1 分析日志文件 164
9.1.1 错误日志文件格式 164
9.1.2 错误日志文件条目实例 166
9.2 配置高级日志记录 168
9.2.1 调试日志记录 169
9.2.2 在运行时切换二进制运行
文件 169
9.2.3 使用访问日志文件进行
调试 175
9.3 常见的配置错误 177
9.3.1 使用if取代try_files 178
9.3.2 使用if作为主机名切换 179
9.3.3 不使用server部分的配置追求
更好的效果 180
9.4 操作系统限制 181
9.4.1 文件描述符限制 181
9.4.2 网络限制 183
9.5 性能问题 184
9.6 使用Stub Status模块 186
9.7 小结 187
附录A 指令参考 189
附录B Rewrite规则指南 224
附录C Nginx社区 236
附录D Solaris系统下的网络调优 239
^ 收 起