第1部分 基础篇 1
第1章 Nginx简介 3
1.1 常用的Web服务器简介 3
1.1.1 Apache服务器 3
1.1.2 Lighttpd服务器 4
1.1.3 Tomcat服务器 4
1.1.4 IBM WebSphere服务器 4
1.1.5 Microsoft IIS 4
1.2 Nginx的发展 5
1.3 选择Nginx的理由 6
1.3.1 它可以高并发连接 6
1.3.2 内存消耗少 7
1.3.3 成本低廉 9
1.3.4 其他理由 9
1.4 Nginx与Apache、Lighttpd的综合对比 10
第2章 Nginx服务器的安装与配置 11
2.1 安装Nginx服务器所需要的系统资源 11
2.2 Nginx的下载 12
2.3 Nginx的安装 12
2.3.1 Nginx在Windows环境下的安装 13
2.3.2 Nginx在Linux环境下的安装 13
2.4 Nginx的启动、停止、平滑重启 17
2.4.1 Nginx的启动 17
2.4.2 Nginx的停止 17
2.5 Nginx的平滑重启 18
2.6 Nginx的信号控制 19
2.7 Nginx的平滑升级 19
第2部分 进阶篇 21
第3章 Nginx的基本配置与优化 23
3.1 Nginx的完整配置示例 23
3.2 Nginx的虚拟主机配置 26
3.2.1 什么是虚拟主机 26
3.2.2 配置基于IP的虚拟主机 26
3.2.3 配置基于域名的虚拟主机 30
3.3 Nginx的日志文件配置与切割 31
3.3.1 用log_format指令设置日志格式 32
3.3.2 用access_log指令指定日志文件存放路径 33
3.3.3 Nginx日志文件的切割 35
3.4 Nginx的压缩输出配置 36
3.5 Nginx的自动列目录配置 36
3.6 Nginx的浏览器本地缓存设置 37
第4章 Nginx与PHP(FastCGI)的安装、配置与优化 39
4.1 获取相关开源程序 41
4.2 安装PHP 5.2.10(FastCGI模式) 43
4.3 安装Nginx 0.8.15 54
4.4 配置开机自动启动Nginx+PHP 57
4.5 优化Linux内核参数 57
4.6 在不停止Nginx服务的情况下平滑变更Nginx配置 58
4.7 编写每天定时切割Nginx日志的脚本 59
第5章 Nginx与JSP、ASP.NET、Perl的安装与配置 61
5.1 Nginx与JSP(Tomcat)在Linux上的安装、配置 61
5.1.1 Tomcat和JDK的安装 62
5.1.2 Nginx与Tomcat的配置 63
5.2 Nginx与ASP.NET(Mono+FastCGI)在Linux上的安装、配置 64
5.2.1 Mono的安装 65
5.2.2 Nginx与ASP.NET(Mono+FastCGI)的配置 65
5.3 Nginx与Perl(FastCGI)在Linux上的安装、配置 69
5.3.1 Perl(FastCGI)的安装 69
5.3.2 Nginx与Perl(FastCGI)的配置 72
第6章 Nginx HTTP负载均衡和反向代理的配置与优化 75
6.1 什么是负载均衡和反向代理 75
6.1.1 负载均衡 75
6.1.2 反向代理 75
6.2 常见的Web负载均衡方法 76
6.2.1 用户手动选择方式 76
6.2.2 DNS轮询方式 77
6.2.3 四/七层负载均衡设备 79
6.2.4 多线多地区智能DNS解析与混合负载均衡方式 83
6.3 Nginx负载均衡与反向代理的配置实例 85
6.3.1 完整的Nginx反向代理示例 85
6.3.2 Nginx负载均衡与反向代理实现动、静态网页分离 89
6.4 Nginx负载均衡的HTTP Upstream模块 90
6.4.1 ip_hash指令 91
6.4.2 server指令 92
6.4.3 upstream指令 92
6.4.4 upstream相关变量 93
6.5 Nginx负载均衡服务器的双机高可用 93
第7章 Nginx的Rewrite规则与实例 101
7.1 什么是Nginx的Rewrite规则 101
7.2 Nginx Rewrite规则相关指令 102
7.2.1 break指令 102
7.2.2 if指令 102
7.2.3 return指令 104
7.2.4 rewrite指令 107
7.2.5 set指令 109
7.2.6 uninitialized_variable_warn指令 109
7.2.7 Nginx Rewrite可以用到的全局变量 109
7.3 PCRE正则表达式语法 110
7.4 Nginx的Rewrite规则编写实例 112
7.5 Nginx与Apache的Rewrite规则实例对比 115
7.5.1 简单Nginx与Apache Rewrite规则 115
7.5.2 允许指定的域名访问本站,其他域名一律跳转 116
7.5.3 URL重写与反向代理同时进行 117
7.5.4 指定URL之外的URL进行Rewrite跳转 117
7.5.5 域名前缀作为重写规则变量的示例 118
第8章 Nginx模块开发 119
8.1 Nginx模块概述 119
8.2 Nginx模块编写实践 121
8.2.1 Hello World模块编写与安装 121
8.2.2 Hello World模块分析 124
第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块 129
9.1 什么是Web缓存 129
9.2 Nginx的Web缓存服务 130
9.2.1 proxy cache相关指令集 130
9.2.2 proxy cache完整示例 132
9.2.3 fastcgi_cache相关指令集 135
9.2.4 fastcgi_cache完整示例 136
9.3 新浪网开源软件项目——基于Nginx的NCACHE网页缓存系统 138
9.3.1 NCACHE模块的安装 139
9.3.2 NCACHE配置文件编写 139
9.3.3 NCACHE的管理维护 142
9.3.4 NCACHE后端内容源服务器设置 142
第3部分 实战篇 143
第10章 Nginx在国内知名网站中的应用案例 145
10.1 Nginx反向代理与负载均衡类网站应用案例 146
10.1.1 Nginx负载均衡在新浪播客中的应用 146
10.1.2 Nginx负载均衡在金山逍遥网中的应用 150
10.2 Nginx+PHP类网站应用案例 156
10.2.1 Nginx+PHP在金山逍遥网CMS发布系统中的应用 156
10.2.2 Nginx+PHP在某分类信息网站中的应用 158
10.3 Nginx视频点播类网站应用案例 159
10.3.1 Nginx视频点播在金山游戏视频网站中的应用 159
第11章 Nginx的非典型应用实例 161
11.1 用HTTPS(SSL)构建一个安全的Nginx Web服务器 161
11.1.1 自行颁发不受浏览器信任的SSL证书 162
11.1.2 向CA机构申请颁发受浏览器信任的SSL证书 164
11.2 采用Nginx搭建FLV视频服务器 166
11.2.1 采用Nginx的Flv Stream模块搭建HTTP下载方式的FLV视频服务器 166
11.2.2 采用Nginx实现FMS/Red5流媒体视频服务器的负载均衡 168
11.3 Nginx+PHP+MySQL在小内存VPS服务器上的优化 170
11.3.1 增加swap交换文件 171
11.3.2 Nginx的主配置文件(nginx.conf)优化 171
11.3.3 PHP(FastCGI)的配置优化 173
11.3.4 MySQL 5.1配置优化 174
11.4 采用Nginx搭建正向代理服务器 175
第4部分 模块篇 177
第12章 Nginx的核心模块 179
12.1 主模块指令 179
12.1.1 daemon指令 179
12.1.2 env指令 180
12.1.3 debug_points指令 180
12.1.4 error_log指令 180
12.1.5 log_not_found指令 182
12.1.6 include指令 182
12.1.7 lock_file指令 182
12.1.8 master_process指令 183
12.1.9 pid指令 183
12.1.10 ssl_engine指令 183
12.1.11 timer_resolution指令 183
12.1.12 try_files指令 184
12.1.13 user指令 186
12.1.14 worker_cpu_affinity指令 186
12.1.15 worke_priority指令 186
12.1.16 worker_processes指令 186
12.1.17 worker_rlimit_core指令 187
12.1.18 worker_rlimit_nofile指令 187
12.1.19 worker_rlimit_sigpencding指令 187
12.1.20 working_directory指令 188
12.2 主模块变量 188
12.3 事件模块指令 188
12.3.1 accept_mutex指令 188
12.3.2 accept_mutex_delay指令 189
12.3.3 debug_connection指令 189
12.3.4 use指令 189
12.3.5 worker_connections指令 189
第13章 Nginx的标准HTTP模块 191
13.1 HTTP的核心模块 191
13.1.1 alias指令 191
13.1.2 client_body_in file only指令 192
13.1.3 client_body_in_single_buffer指令 192
13.1.4 client_body_buffer_size指令 192
13.1.5 client_body_temp_path指令 193
13.1.6 client_body_timeout指令 193
13.1.7 client_header_buffer_size指令 193
13.1.8 client_header_timeout指令 193
13.1.9 client_max_body_size指令 194
13.1.10 default_type指令 194
13.1.11 directio指令 194
13.1.12 error page指令 195
13.1.13 if_modified_since指令 196
13.1.14 index指令 196
13.1.15 internal指令 197
13.1.16 keepalive_timeout指令 197
13.1.17 keepalive_requests指令 198
13.1.18 large_client_header_buffers指令 198
13.1.19 limit_except指令 199
13.1.20 limit_rate指令 199
13.1.21 limit_rate_after指令 199
13.1.22 listen指令 200
13.1.23 location指令 200
13.1.24 log_not_found指令 202
13.1.25 log_subrequest指令 202
13.1.26 msie_padding指令 202
13.1.27 msie_refresh指令 203
13.1.28 open_file_cache指令 203
13.1.29 open_file_cache_errors指令 204
13.1.30 open_file_cache_min_uses指令 204
13.1.31 open_file_cache_valid指令 204
13.1.32 optimize_server_names指令 204
13.1.33 port_in_redirect指令 205
13.1.34 recursive_error_pages指令 205
13.1.35 resolver指令 205
13.1.36 resolver_timeout指令 205
13.1.37 root指令 206
13.1.38 satisfy_any指令 206
13.1.39 send_timeout指令 206
13.1.40 sendfile指令 206
13.1.41 server指令 207
13.1.42 server_name指令 207
13.1.43 server_name_in_redirect指令 209
13.1.44 server_names_hash_max_size指令 209
13.1.45 server_names_hash_bucket_size指令 210
13.1.46 server_tokens指令 210
13.1.47 tcp_nodelay指令 210
13.1.48 tcp_nopush指令 210
13.1.49 try_files指令 211
13.1.50 types指令 211
13.1.51 HTTP核心模块中可以使用的变量 212
13.2 HTTP Upstream模块 214
13.3 HTTP Access模块 214
13.3.1 allow指令 215
13.3.2 deny指令 215
13.4 HTTP Auth Basic模块 215
13.4.1 auth_basic指令 215
13.4.2 auth_basic_user_file指令 216
13.5 HTTP Autoindex模块 217
13.5.1 autoindex指令 217
13.5.2 autoindex_exact_size指令 217
13.5.3 autoindex_localtime指令 218
13.6 HTTP Browser模块 218
13.6.1 ancient_browser指令 219
13.6.2 ancient_browser_value指令 219
13.6.3 modern_browser指令 219
13.6.4 modern_browser_value指令 221
13.7 HTTP Charset模块 222
13.7.1 charset指令 222
13.7.2 charset_map指令 222
13.7.3 override_charset指令 224
13.7.4 source_charset指令 224
13.8 HTTP Empty Gif模块 224
13.8.1 empty_gif指令 224
13.9 HTTP Fcgi模块 224
13.9.1 fastcgi_buffers指令 225
13.9.2 fastcgi_buffer_size指令 226
13.9.3 fastcgi_cache指令 226
13.9.4 fastcgi_cache_key指令 226
13.9.5 fastcgi_cache_methods指令 227
13.9.6 fastcgi_index指令 227
13.9.7 fastcgi_hide_header指令 227
13.9.8 fastcgi_ignore_client_abort指令 227
13.9.9 fastcgi_intercept_errors指令 228
13.9.10 fastcgi_max_temp_file_size指令 228
13.9.11 fastcgi_param指令 228
13.9.12 fastcgi_pass指令 229
13.9.13 fastcgi_pass_header指令 229
13.9.14 fastcgi_read_timeout指令 229
13.9.15 fastcgi_redirect_errors指令 230
13.9.16 fastcgi_split_path_info指令 230
13.10 geo模块 230
13.10.1 geo指令 232
13.11 Gzip模块 233
13.11.1 gzip指令 234
13.11.2 gzip_buffers指令 234
13.11.3 gzip_comp_level指令 234
13.11.4 gzip_min_length指令 234
13.11.5 gzip_http_version指令 235
13.11.6 gzip_proxied指令 235
13.11.7 gzip_types指令 236
13.12 HTTP Headers模块 236
13.12.1 add_header指令 237
13.12.2 expires指令 237
13.13 HTTP Index模块 237
13.13.1 index指令 238
13.14 HTTP Referer模块 238
13.14.1 valid_referers指令 238
13.15 HTTP Limit Zone模块 239
13.15.1 limit_zone指令 239
13.15.2 limit_conn指令 240
13.16 HTTP Limit Req模块 240
13.16.1 limit_req_zone指令 241
13.16.2 limit_req指令 241
13.17 HTTP Log模块 242
13.17.1 access_log指令 242
13.17.2 log_format指令 243
13.17.3 log_format_combined指令 243
13.17.4 open_log_file_cache指令 244
13.18 HTTP Map模块 244
13.18.1 map指令 245
13.18.2 map_hash_max_size指令 245
13.18.3 map_hash_bucket_size指令 246
13.19 HTTP Memcached模块 246
13.19.1 memcached_pass指令 248
13.19.2 memcached_connect_timeout指令 249
13.19.3 memcached_read_timeout指令 249
13.19.4 memcached_send_timeout指令 249
13.19.5 memcached_buffer_size指令 249
13.19.6 memcached_next_upstream指令 249
13.19.7 HTTP Memcached模块中的变量 250
13.19.8 第三方的Memcached模块 250
13.20 HTTP Proxy模块 250
13.20.1 proxy_buffer_size指令 251
13.20.2 proxy_buffering指令 251
13.20.3 proxy_buffers指令 251
13.20.4 proxy_busy_buffers_size指令 252
13.20.5 proxy_cache相关指令集 252
13.20.6 proxy_connect_timeout指令 252
13.20.7 proxy_headers_hash_bucket_size指令 252
13.20.8 proxy_headers_hash_max_size指令 253
13.20.9 proxy_hide_header指令 253
13.20.10 proxy_ignore_client_abort指令 253
13.20.11 proxy_ignore_headers指令 253
13.20.12 proxy_intercept_errors指令 254
13.20.13 proxy_max_temp_file_size指令 254
13.20.14 proxy_method指令 254
13.20.15 proxy_next_upstream指令 255
13.20.16 proxy_pass指令 256
13.20.17 proxy_pass_header指令 257
13.20.18 proxy_pass_request_body指令 257
13.20.19 proxy_pass_request_headers指令 257
13.20.20 proxy_redirect指令 257
13.20.21 proxy_read_timeout指令 259
13.20.22 proxy_redirect_errors指令 259
13.20.23 proxy_send_lowat指令 259
13.20.24 proxy_send_timeout指令 259
13.20.25 proxy_set_body指令 260
13.20.26 proxy_set_header指令 260
13.20.27 proxy_store指令 261
13.20.28 proxy_store_access指令 262
13.20.29 proxy_temp_file_write_size指令 262
13.20.30 proxy_temp_path指令 262
13.20.31 proxy_upstream_fail_timeout指令 263
13.20.32 proxy_upstream_max_fails指令 263
13.20.33 HTTP Proxy模块的变量 263
13.21 HTTP Rewrite模块 263
13.22 HTTP SSI模块 263
13.22.1 ssi指令 264
13.22.2 ssi_silent_errors指令 264
13.22.3 ssi_types指令 264
13.22.4 ssi_value_length指令 265
13.22.5 SSI命令 265
13.22.6 SSI变量 267
13.23 HTTP Userid模块 267
13.23.1 userid指令 267
13.23.2 userid_domain指令 268
13.23.3 userid_expires指令 268
13.23.4 userid_name指令 268
13.23.5 userid_p3p指令 268
13.23.6 userid_path指令 269
13.23.7 userid_service指令 269
第14章 Nginx的其他HTTP模块 271
14.1 HTTP Addition模块 271
14.1.1 add_before_body指令 272
14.1.2 add_after_body指令 272
14.1.3 addition_types指令 273
14.2 Embedded Perl模块 273
14.2.1 perl指令 274
14.2.2 perl_modules指令 274
14.2.3 perl_require指令 275
14.2.4 perl_set指令 275
14.2.5 从SSI调用Perl脚本 276
14.3 Flv Stream模块 278
14.3.1 flv指令 279
14.4 HTTP Gzip Static模块 279
14.4.1 gzip_static指令 279
14.4.2 gzip_http_version指令 280
14.4.3 gzip_proxied指令 280
14.5 HTTP Random Index模块 280
14.5.1 random_index指令 280
14.6 HTTP Geo IP模块 280
14.6.1 geoip_country指令 281
14.6.2 geoip_city指令 282
14.7 HTTP RealIp模块 282
14.7.1 set_real_ip_from指令 283
14.7.2 real_ip_header指令 283
14.8 HTTP SSL模块 283
14.8.1 在多个server{……}虚拟主机中使用通配符SSL证书 286
14.8.2 ssl指令 286
14.8.3 ssl_certificate指令 286
14.8.4 ssl_certificate_key指令 287
14.8.5 ssl_client_certificate指令 287
14.8.6 ssl_dhparam指令 287
14.8.7 ssl_ciphers指令 287
14.8.8 ssl_crl指令 288
14.8.9 ssl_prefer_server_ciphers指令 288
14.8.10 ssl_protocols指令 288
14.8.11 ssl_verify_client指令 288
14.8.12 ssl_verify_depth指令 289
14.8.13 ssl_session_cache指令 289
14.8.14 ssl_session_timeout指令 290
14.8.15 ssl_engine指令 290
14.9 HTTP Stub Status模块 291
14.9.1 stub status指令 291
14.10 HTTP Sub模块 292
14.10.1 sub_filter指令 292
14.10.2 sub_filter_once指令 292
14.10.3 sub_filter_types指令 293
14.11 HTTP Dav模块 293
14.11.1 dav access指令 293
14.11.2 dav methods指令 294
14.11.3 create_full_put_path指令 294
14.12 Google Perftools模块 294
14.12.1 google_perftools_profiles指令 295
14.13 HTTP XSLT模块 295
14.13.1 xslt_entities指令 296
14.13.2 xslt_stylesheet指令 296
14.13.3 xslt_types指令 297
14.14 HTTP Secure Link模块 297
14.14.1 secure_link_secret指令 297
14.14.2 $secure_link变量 298
14.15 HTTP Image Filter模块 299
14.15.1 image_filter指令 299
14.15.2 image_filter_buffer指令 300
14.15.3 image_filter_jpeg_quality指令 300
14.15.4 image_filter_transparency指令 300
第1 5章 Nginx的邮件模块 301
15.1 Nginx邮件核心模块 303
15.1.1 auth指令 303
15.1.2 imap_capabilities指令 303
15.1.3 imap_client_buffer指令 303
15.1.4 listen指令 303
15.1.5 pop3_auth指令 304
15.1.6 pop3_capabilities指令 304
15.1.7 protocol指令 304
15.1.8 server指令 305
15.1.9 server_name指令 305
15.1.10 smtp_auth指令 306
15.1.11 smtp_capabilities指令 306
15.1.12 so_keepalive指令 306
15.1.13 timeout指令 307
15.2 Nginx邮件认证模块 307
15.2.1 auth_http指令 307
15.2.2 auth_http_header指令 307
15.2.3 auth_http_timeout指令 308
15.3 Nginx邮件代理模块 308
15.3.1 proxy指令 308
15.3.2 proxy_buffer指令 308
15.3.3 proxy_pass_error_message指令 309
15.3.4 proxy_timeout指令 309
15.3.5 xclient指令 309
15.4 Nginx邮件SSL模块 310
15.4.1 ssl模块 310
15.4.2 ssl_certificate指令 310
15.4.3 ssl_certificate_key指令 310
15.4.4 ssl_ciphers指令 310
15.4.5 ssl_prefer_server_ciphers指令 311
15.4.6 ssl_protocols指令 311
15.4.7 ssl_session_cache指令 311
15.4.8 ssl_session_timeout指令 312
15.4.9 starttls指令 312
15.5 Nginx邮件模块配置实例 312
索引 315
参考资料 319