书名:《实战Nginx:取代Apache的高性能Web服务器》
作者:张宴
出版社:电子工业出版社
ISBN号:9787121102479
出版日期:2010年03月
字数:430千字
页码:352
开本:16
网上书城:
卓越亚马逊:http://www.amazon.cn/mn/detailApp/ref=sr_1_1?_encoding=UTF8&s=books&qid=1270279433&asin=B003CHHHB8&sr=8-1
当当网:http://product.dangdang.com/product.aspx?product_id=20807089&ref=search-0-A
China-Pub:http://www.china-pub.com/196364
电子工业出版社书城:http://www.phei.com.cn/bookshop/bookinfo.asp?bookcode=TP102470&booktype=main
撰写本书的背景
近期,新浪、搜狐、网易、腾讯、金山、TOM、中华网、赛尔网络、上海九城等知名互联网公司的系统工程师、网络工程师招聘信息中,都加上了一条对Nginx配置管理经验的要求。Nginx作为新兴的Web服务器,目前的发展势头迅猛,已经在众多知名网站的各项产品中取代Apache。但是,Nginx相关的中文资料却比较欠缺,目前还没有关于Nginx服务器的任何书籍,这也使得一些朋友对于是否采用Nginx取代Apache犹豫不决。本书就是为对Nginx服务器实践应用感兴趣的读者准备的,适用于以前没有接触过Nginx,或者对Nginx有一些了解并希望能够进一步深入,以及对Nginx有较强研究,希望共同探讨的专业系统工程师、个人网站站长及一切Linux/Unix从业人员。
本书的主要内容
Nginx(“engine x”)是俄罗斯人Igor Sysoev编写的一款高性能HTTP 和反向代理服务器。Nginx选择了epoll和kqueue作为网络I/O模型,在高连接并发的情况下,Nginx是Apache服务器不错的替代品,它能够支持高达50000个并发连接数的响应,运行稳定,且内存、CPU等系统资源消耗非常低。
本书主要分为4个部分,第1部分为基础篇,介绍了Nginx服务器的安装与配置方法;第2部分为进阶篇,重点介绍了Nginx的配置优化方法、Nginx与PHP/JSP/ASP.NET/Perl的结合配置方法、Nginx HTTP反向代理与负载均衡的配置与优化、Nginx的Rewrite规则、Nginx的Web缓存服务、Nginx模块开发等,最后还分析了新浪的开源软件项目──基于Nginx的NCache网页缓存系统;第3部分为实战篇,分析了Nginx在国内知名网站(如新浪播客、金山逍遥网等)中的应用案例,以及Nginx在Flash FLV视频点播、小内存VPS服务器上的优化等内容;第4部分为模块篇,对Nginx的各项模块进行了集中介绍,可以作为参考手册来翻阅。
致谢
在这本书的编写过程中,得到了家人、同事和朋友的大量支持,在此我表示由衷的感谢。感谢老婆对我的支持与鼓励,感谢余建煊、李静、张鹏翼等朋友为本书作序,以及给予的帮助。感谢前新浪播客刘博、郑宇、姜源、李雅敏、宋健等朋友,以及现在金山逍遥网技术支持部所有同事在研究Nginx,以及日常工作中给我的支持与帮助。此外,还要感谢吴捷(第九城市)以及不知名的网友给予的意见和建议。
最后,要感谢在本书的编写过程中,博文视点的徐定翔、白爱萍、陈元玉等编辑给予的帮助与支持。
作者联系方式
由于自身能力有限,书中难免存在错误与疏漏,如果读者发现哪儿存在错误,或者有什么想法和意见,可以通过E-mail或在我博客留言,与我联系。
个人博客:http://blog.zyan.cc
E-mail:net@zyan.cc
目录:
第1章 Nginx简介基本介绍
1.1 常用的Web服务器简介 3
1.1.1 Apache服务器 3
1.1.2 Lighttpd 服务器 3
1.1.3 Tomcat 服务器 4
1.1.4 IBM WebSphere 服务器 4
1.1.5 Microsoft IIS 4
1.2 Nginx简介 4
1.3 选择Nginx的理由 5
1.3.1 它可以高并发连接 5
1.3.2 内存消耗少 7
1.3.3 配置文件非常简单 8
1.3.4 成本低廉 8
1.3.5 支持Rewrite重写规则 9
1.3.6 内置的健康检查功能 9
1.3.7 节省带宽 9
1.3.8 稳定性高 9
1.3.9 支持热部署 9
1.4 Nginx与Apache、Lighttpd的综合对比 9
第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的启动、停止、平滑重启 16
2.4.1 Nginx的启动 17
2.4.2 Nginx的停止 17
2.5 Nginx的平滑重启 18
2.6 Nginx的信号控制 18
2.7 Nginx的平滑升级 19
第3章 Nginx的基本配置与优化 21
3.1 Nginx的完整配置示例 21
3.2 Nginx的虚拟主机配置 23
3.2.1 什么是虚拟主机 23
3.2.2 配置基于IP的虚拟主机 24
3.2.3 配置基于域名的虚拟主机 27
3.3 Nginx的日志文件配置与切割 29
3.3.1 用log_format指令设置日志格式 29
3.3.2 用access_log指令指定日志文件存放路径 30
3.3.3 Nginx日志文件的切割 32
3.4 Nginx的压缩输出配置 33
3.5 Nginx的自动列目录配置 35
3.6 Nginx的浏览器本地缓存设置 36
第4章 Nginx与PHP(FastCGI)的安装、配置与优化 38
4.1 获取相关开源程序 39
4.2 安装PHP 5.2.10(FastCGI模式) 42
4.3 安装Nginx 0.8.15 52
4.4 配置开机自动启动Nginx + PHP 55
4.5 优化Linux内核参数 55
4.6 在不停止Nginx服务的情况下平滑变更Nginx配置 56
4.7 编写每天定时切割Nginx日志的脚本 56
第5章 Nginx与JSP、ASP.NET、Perl的安装与配置 59
5.1 Nginx与JSP(Tomcat)在Linux上的安装、配置 59
5.2.1 Tomcat和JDK的安装 60
5.1.2 Nginx与Tomcat的配置 61
5.2 Nginx与ASP.NET(Mono+FastCGI)在Linux上的安装、配置 63
5.2.1 Mono的安装 63
5.2.2 Nginx与ASP.NET(Mono+FastCGI)的配置 64
5.3 Nginx与Perl(FastCGI)在Linux上的安装、配置 67
5.3.1 Perl(FastCGI)的安装 67
5.3.2 Nginx与Perl(FastCGI)的配置 70
第6章 Nginx HTTP负载均衡和反向代理的配置与优化 73
6.1 什么是负载均衡和反向代理 73
6.1.1 负载均衡 73
6.1.2 反向代理 73
6.2 常见的Web负载均衡方法 74
6.2.1 用户手动选择方式 74
6.2.2 DNS轮询方式 75
6.2.3 四/七层负载均衡设备 77
6.2.4 多线多地区智能DNS解析与混合负载均衡方式 81
6.3 Nginx负载均衡与反向代理的配置实例 83
6.3.1 完整的Nginx反向代理示例如代码6-3所示 83
6.3.2 Nginx负载均衡与反向代理实现动、静态网页分离 86
6.4 Nginx负载均衡的HTTP Upstream 模块 88
6.4.1 ip_hash指令 89
6.4.2 server指令 89
6.4.3 upstream 指令 90
6.4.4 upstream相关变量 90
6.5 Nginx负载均衡服务器的双机高可用 91
第7章 Nginx的Rewrite规则编写实例 99
7.1 什么是Nginx的Rewrite规则 99
7.2 Nginx Rewrite规则相关指令 99
7.2.1 break指令 100
7.2.2 if 指令 100
7.2.3 return 指令 101
7.2.4 rewrite 指令 104
7.2.5 set 指令 106
7.2.6 uninitialized_variable_warn 指令 106
7.2.7 Nginx Rewrite可以用到的全局变量 106
7.3 PCRE正则表达式语法 107
7.4 Nginx的Rewrite规则编写实例 109
7.5 Nginx与Apache的Rewrite规则实例对比 112
7.5.1 简单的Nginx与Apache Rewrite重写规则 112
7.5.2 允许指定的域名访问本站,其他域名一律跳转到http://www.aaa.com 113
7.5.3 URL重写与反向代理同时进行 114
7.5.4 指定URL之外的URL进行Rewrite跳转 114
7.5.5 域名前缀作为重写规则变量的示例 115
第8章 Nginx模块开发 117
8.1 Nginx模块概述 117
8.2 Nginx模块编写实践 119
8.2.1 Hello World模块编写与安装 119
8.2.2 Hello World模块分析 121
第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块 127
9.1 什么是Web缓存? 127
9.2 Nginx的Web缓存服务 128
9.2.1 proxy_cache相关指令集 128
9.2.2 proxy_cache完整示例 130
9.2.3 fastcgi_cache相关指令集 131
9.3 新浪网开源软件项目——基于Nginx的NCache网页缓存系统 135
9.3.1 NCACHE模块的安装 136
9.3.2 NCACHE配置文件编写 136
9.3.3 NCACHE的管理维护 138
9.3.4 NCACHE后端内容源服务器设置 139
第10章 Nginx在国内知名网站中的应用案例 141
10.1 Nginx反向代理与负载均衡类网站应用案例 142
10.1.1 Nginx负载均衡在新浪播客中的应用 142
10.1.2 Nginx负载均衡在金山逍遥网中的应用 146
10.2 Nginx+PHP类网站应用案例 152
10.2.1 Nginx+PHP 在金山逍遥网CMS发布系统中的应用 152
10.2.2 Nginx+PHP 在某分类信息网站中的应用 154
第11章 Nginx的非典型应用实例 171
11.1 用HTTPS(SSL)构建一个安全的Nginx Web服务器 171
11.1.1 自行颁发不受浏览器信任的SSL证书 171
11.1.2 向CA机构申请颁发受浏览器信任的SSL证书 174
11.2 采用Nginx搭建FLV视频服务器 176
11.2.1 采用Nginx的Flv Stream模块搭建HTTP下载方式的FLV视频服务器 176
11.2.2 采用Nginx实现FMS/Red5流媒体视频服务器的负载均衡 177
11.3 Nginx+PHP+MySQL在小内存VPS服务器上的优化 179
11.3.1 增加swap交换文件 180
11.3.2 Nginx的主配置文件(nginx.conf)优化 180
11.3.3 PHP(FastCGI)的配置优化 182
11.3.4 MySQL 5.1 配置优化 182
11.4 采用Nginx搭建正向代理服务器 184
第12章 Nginx的核心模块 185
12.1 主模块指令 185
12.1.1 daemon 指令 185
12.1.2 env 指令 186
12.1.3 debug_points 指令 186
12.1.4 error_log 指令 186
12.1.5 log_not_found 指令 187
12.1.6 include 指令 188
12.1.7 lock_file 指令 188
12.1.8 master_process 指令 188
12.1.9 pid 指令 189
12.1.10 ssl_engine 指令 189
12.1.11 timer_resolution 指令 189
12.1.12 try_files 指令 189
12.1.13 user 指令 191
12.1.14 worker_cpu_affinity 指令 191
12.1.15 worker_priority 指令 192
12.1.16 worker_processes 指令 192
12.1.17 worker_rlimit_core 指令 193
12.1.18 worker_rlimit_nofile 指令 193
12.1.18 worker_rlimit_sigpending 指令 193
12.1.19 working_directory 指令 193
12.2 主模块变量 193
12.3 事件模块指令 194
12.3.1 accept_mutex指令 194
12.3.2 accept_mutex_delay指令 194
12.3.3 debug_connection 指令 194
12.3.4 use 指令 195
12.3.5 worker_connections 指令 195
第13章 Nginx的标准HTTP模块 197
13.1 HTTP的核心模块 197
13.1.1 alias 指令 197
13.1.2 client_body_in_file_only 指令 198
13.1.3 client_body_in_single_buffer 指令 198
13.1.4 client_body_buffer_size 指令 198
13.1.5 client_body_temp_path 指令 198
13.1.6 client_body_timeout 指令 199
13.1.7 client_header_buffer_size 指令 199
13.1.8 client_header_timeout 指令 199
13.1.9 client_max_body_size 指令 199
13.1.10 default_type 指令 200
13.1.11 directio 指令 200
13.1.12 error_page 指令 201
13.1.13 if_modified_since 指令 201
13.1.14 index 指令 202
13.1.14 internal 指令 202
13.1.15 keepalive_timeout 指令 203
13.1.16 keepalive_requests 指令 203
13.1.17 large_client_header_buffers 指令 204
13.1.18 limit_except 指令 204
13.1.19 limit_rate 指令 204
13.1.20 limit_rate_after 指令 205
13.1.21 listen 指令 205
13.1.22 location 指令 206
13.1.24 log_not_found 指令 207
13.1.25 log_subrequest 指令 207
13.1.26 msie_padding 指令 208
13.1.27 msie_refresh 指令 208
13.1.28 open_file_cache 指令 208
13.1.29 open_file_cache_errors 指令 209
13.1.30 open_file_cache_min_uses 指令 209
13.1.31 open_file_cache_valid 指令 209
13.1.32 optimize_server_names 指令 209
13.1.33 port_in_redirect指令 210
13.1.34 recursive_error_pages指令 210
13.1.35 resolver指令 210
13.1.36 resolver_timeout指令 210
13.1.37 root指令 211
13.1.38 satisfy_any指令 211
13.1.39 send_timeout指令 211
13.1.40 sendfile指令 211
13.1.41 server指令 212
13.1.42 server_name指令 212
13.1.43 server_name_in_redirect指令 214
13.1.44 server_names_hash_max_size指令 214
13.1.45 server_names_hash_bucket_size指令 214
13.1.46 server_tokens指令 215
13.1.47 tcp_nodelay指令 215
13.1.48 tcp_nopush指令 215
13.1.49 try_files指令 215
13.1.50 types指令 216
13.1.51 HTTP核心模块中可以使用的变量 216
13.2 HTTP Upstream模块 219
13.3 Http Access 模块 219
13.3.1 allow 指令 219
13.3.2 deny 指令 219
13.4 HTTP Auth Basic 模块 220
13.4.1 auth_basic 指令 220
13.4.2 auth_basic_user_file 221
13.5 Http Autoindex 模块 221
13.5.1 autoindex 指令 221
13.5.2 autoindex_exact_size 指令 222
13.5.3 autoindex_localtime 指令 222
13.6 Http Browser 模块 222
13.6.1 ancient_browser 指令 223
13.6.2 ancient_browser_value 指令 223
13.6.3 modern_browser 指令 223
13.6.4 modern_browser_value 指令 225
13.7 Http Charset 模块 226
13.7.1 charset 指令 226
13.7.2 charset_map 指令 226
13.7.3 override_charset 指令 228
13.7.4 source_charset 指令 228
13.8 Http Empty Gif 模块 228
13.8.1 empty_gif 指令 228
13.9 Http Fcgi 模块 228
13.9.1 fastcgi_buffers 指令 229
13.9.2 fastcgi_buffer_size 指令 230
13.9.3 fastcgi_cache 指令 230
13.9.4 fastcgi_cache_key 指令 230
13.9.5 fastcgi_cache_methods 指令 230
13.9.6 fastcgi_index 指令 231
13.9.7 fastcgi_hide_header 指令 231
13.9.8 fastcgi_ignore_client_abort 指令 231
13.9.9 fastcgi_intercept_errors 指令 231
13.9.10 fastcgi_max_temp_file_size 指令 232
13.9.11 fastcgi_param 指令 232
13.9.12 fastcgi_pass 指令 233
13.9.13 fastcgi_pass_header 指令 234
13.9.14 fastcgi_read_timeout 指令 234
13.9.15 fastcgi_redirect_errors 指令 234
13.9.16 fastcgi_split_path_info 指令 234
13.10 Geo 模块 235
13.10.1 geo指令 236
13.11 Gzip 模块 237
13.11.1 gzip指令 238
13.11.2 gzip_buffers指令 238
13.11.3 gzip_comp_level指令 239
13.11.4 gzip_min_length指令 239
13.11.5 gzip_http_version指令 239
13.11.6 gzip_proxied指令 240
13.11.7 gzip_types指令 240
13.12 Http Headers模块 241
13.12.1 add_header指令 242
13.12.2 expires指令 242
13.13 Http Index模块 243
13.13.1 index指令 243
13.14 Http Referer模块 243
13.14.1 valid_referers指令 244
13.15 Http Limit Zone模块 244
13.15.1 limit_zone指令 245
13.15.2 limit_conn指令 245
13.16 Http Limit Req模块 246
13.16.1 limit_req_zone指令 246
13.16.2 limit_req指令 247
13.17 Http Log模块 248
13.17.1 access_log指令 248
13.17.2 log_format指令 249
13.17.3 log_format_combined指令 249
13.17.4 open_log_file_cache指令 250
13.18 Http Map模块 250
13.18.1 map指令 251
13.18.2 map_hash_max_size指令 252
13.18.3 map_hash_bucket_size指令 252
13.19 Http Memcached模块 252
13.19.1 memcached_pass指令 254
13.19.2 memcached_connect_timeout指令 255
13.19.3 memcached_read_timeout指令 255
13.19.4 memcached_send_timeout指令 255
13.19.5 memcached_buffer_size指令 256
13.19.6 memcached_next_upstream指令 256
13.19.7 Http Memcached模块中的变量 256
13.19.8 第三方的Memcached模块 256
13.20 Http Proxy模块 257
13.20.1 proxy_buffer_size指令 257
13.20.2 proxy_buffering指令 257
13.20.3 proxy_buffers指令 258
13.20.4 proxy_busy_buffers_size指令 258
13.20.5 proxy_cache相关指令集 259
13.20.6 proxy_connect_timeout指令 259
13.20.7 proxy_headers_hash_bucket_size指令 259
13.20.8 proxy_headers_hash_max_size指令 259
13.20.9 proxy_hide_header指令 260
13.20.10 proxy_ignore_client_abort指令 260
13.20.11 proxy_ignore_headers指令 260
13.20.12 proxy_intercept_errors指令 261
13.20.13 proxy_max_temp_file_size指令 261
13.20.14 proxy_method指令 261
13.20.15 proxy_next_upstream指令 262
13.20.16 proxy_pass指令 263
13.20.17 proxy_pass_header指令 264
13.20.18 proxy_pass_request_body指令 265
13.20.19 proxy_pass_request_headers指令 265
13.20.20 proxy_redirect指令 265
13.20.21 proxy_read_timeout指令 266
13.20.22 proxy_redirect_errors指令 267
13.20.23 proxy_send_lowat指令 267
13.20.24 proxy_send_timeout指令 267
13.20.25 proxy_set_body指令 268
13.20.26 proxy_set_header指令 268
13.20.27 proxy_store指令 269
13.20.28 proxy_store_access指令 270
13.20.29 proxy_temp_file_write_size指令 271
13.20.30 proxy_temp_path指令 271
13.20.31 proxy_upstream_fail_timeout指令 271
13.20.32 proxy_upstream_max_fails指令 271
13.20.33 Http Proxy模块的变量 272
13.21 Http Rewrite模块 272
13.22 Http SSI模块 272
13.22.1 ssi指令 273
13.22.2 ssi_silent_errors指令 273
13.22.3 ssi_types指令 273
13.22.4 ssi_value_length指令 274
13.22.5 SSI命令 274
13.22.6 SSI变量 276
13.27 Http Userid模块 277
13.27.1 userid指令 277
13.27.2 userid_domain指令 277
13.27.3 userid_expires指令 278
13.27.4 userid_name指令 278
13.27.5 userid_p3p指令 278
13.27.6 userid_path指令 279
13.27.6 userid_service指令 279
第14章 Nginx的其他HTTP模块 280
14.1 Http Addition模块 280
14.1.1 add_before_body 281
14.1.2 add_after_body 281
14.1.3 addition_types 281
14.2 Embedded Perl模块 281
14.2.1 perl 指令 283
14.2.2 perl_modules 指令 283
14.2.3 perl_require 指令 283
14.2.4 perl_set 指令 283
14.2.5 从SSI调用Perl脚本 284
14.3 Flv Stream模块 286
14.3 flv 指令 287
14.4 Http Gzip Static模块 287
14.4.1 gzip_static 指令 287
14.4.2 gzip_http_version 指令 287
14.4.3 gzip_proxied指令 288
14.5 Http Random Index模块 288
14.5.1 random_index 指令 288
14.6 Http Geo IP模块 288
14.6.1 geoip_country 指令 289
14.6.2 geoip_city 模块 289
14.7 Http RealIp模块 290
14.7.1 set_real_ip_from 指令 290
14.7.2 real_ip_header 指令 291
14.8 Http SSL模块 291
14.8.1 在多个server{......}虚拟主机中使用通配符SSL证书 294
14.8.2 ssl 指令 294
14.8.3 ssl_certificate 指令 294
14.8.4 ssl_certificate_key 指令 295
14.8.5 ssl_client_certificate 指令 295
14.8.6 ssl_dhparam 指令 295
14.8.7 ssl_ciphers 指令 295
14.8.8 ssl_crl 指令 296
14.8.9 ssl_prefer_server_ciphers 指令 296
14.8.10 ssl_protocols 指令 296
14.8.11 ssl_verify_client 指令 296
14.8.12 ssl_verify_depth 指令 296
14.8.13 ssl_session_cache 指令 297
14.8.14 ssl_session_timeout 指令 297
14.8.15 ssl_engine 指令 298
14.9 Http Stub Status模块 298
14.9.1 stub_status 指令 299
14.10 Http Sub模块 299
14.10.1 sub_filter 指令 300
14.10.2 sub_filter_once 指令 300
14.10.3 sub_filter_types 指令 300
14.11 Http Dav模块 300
14.11.1 dav_access 指令 301
14.11.2 dav_methods 指令 301
14.11.3 create_full_put_path 指令 301
14.12 Google Perftools模块 302
14.12.1 google_perftools_profiles 指令 302
14.13 Http XSLT模块 302
14.13.1 xslt_entities 指令 303
14.13.2 xslt_stylesheet 指令 303
14.13.3 xslt_types 指令 304
14.14 Http Secure Link模块 304
14.14.1 secure_link_secret 指令 304
14.14.2 $secure_link 变量 305
14.15 Http Image Filter模块 306
14.15.1 image_filter 306
14.15.2 image_filter_buffer 306
14.15.3 image_filter_jpeg_quality 307
14.15.4 image_filter_transparency 307
作者:张宴
出版社:电子工业出版社
ISBN号:9787121102479
出版日期:2010年03月
字数:430千字
页码:352
开本:16
网上书城:
卓越亚马逊:http://www.amazon.cn/mn/detailApp/ref=sr_1_1?_encoding=UTF8&s=books&qid=1270279433&asin=B003CHHHB8&sr=8-1
当当网:http://product.dangdang.com/product.aspx?product_id=20807089&ref=search-0-A
China-Pub:http://www.china-pub.com/196364
电子工业出版社书城:http://www.phei.com.cn/bookshop/bookinfo.asp?bookcode=TP102470&booktype=main
撰写本书的背景
近期,新浪、搜狐、网易、腾讯、金山、TOM、中华网、赛尔网络、上海九城等知名互联网公司的系统工程师、网络工程师招聘信息中,都加上了一条对Nginx配置管理经验的要求。Nginx作为新兴的Web服务器,目前的发展势头迅猛,已经在众多知名网站的各项产品中取代Apache。但是,Nginx相关的中文资料却比较欠缺,目前还没有关于Nginx服务器的任何书籍,这也使得一些朋友对于是否采用Nginx取代Apache犹豫不决。本书就是为对Nginx服务器实践应用感兴趣的读者准备的,适用于以前没有接触过Nginx,或者对Nginx有一些了解并希望能够进一步深入,以及对Nginx有较强研究,希望共同探讨的专业系统工程师、个人网站站长及一切Linux/Unix从业人员。
本书的主要内容
Nginx(“engine x”)是俄罗斯人Igor Sysoev编写的一款高性能HTTP 和反向代理服务器。Nginx选择了epoll和kqueue作为网络I/O模型,在高连接并发的情况下,Nginx是Apache服务器不错的替代品,它能够支持高达50000个并发连接数的响应,运行稳定,且内存、CPU等系统资源消耗非常低。
本书主要分为4个部分,第1部分为基础篇,介绍了Nginx服务器的安装与配置方法;第2部分为进阶篇,重点介绍了Nginx的配置优化方法、Nginx与PHP/JSP/ASP.NET/Perl的结合配置方法、Nginx HTTP反向代理与负载均衡的配置与优化、Nginx的Rewrite规则、Nginx的Web缓存服务、Nginx模块开发等,最后还分析了新浪的开源软件项目──基于Nginx的NCache网页缓存系统;第3部分为实战篇,分析了Nginx在国内知名网站(如新浪播客、金山逍遥网等)中的应用案例,以及Nginx在Flash FLV视频点播、小内存VPS服务器上的优化等内容;第4部分为模块篇,对Nginx的各项模块进行了集中介绍,可以作为参考手册来翻阅。
致谢
在这本书的编写过程中,得到了家人、同事和朋友的大量支持,在此我表示由衷的感谢。感谢老婆对我的支持与鼓励,感谢余建煊、李静、张鹏翼等朋友为本书作序,以及给予的帮助。感谢前新浪播客刘博、郑宇、姜源、李雅敏、宋健等朋友,以及现在金山逍遥网技术支持部所有同事在研究Nginx,以及日常工作中给我的支持与帮助。此外,还要感谢吴捷(第九城市)以及不知名的网友给予的意见和建议。
最后,要感谢在本书的编写过程中,博文视点的徐定翔、白爱萍、陈元玉等编辑给予的帮助与支持。
作者联系方式
由于自身能力有限,书中难免存在错误与疏漏,如果读者发现哪儿存在错误,或者有什么想法和意见,可以通过E-mail或在我博客留言,与我联系。
个人博客:http://blog.zyan.cc
E-mail:net@zyan.cc
目录:
第1章 Nginx简介基本介绍
1.1 常用的Web服务器简介 3
1.1.1 Apache服务器 3
1.1.2 Lighttpd 服务器 3
1.1.3 Tomcat 服务器 4
1.1.4 IBM WebSphere 服务器 4
1.1.5 Microsoft IIS 4
1.2 Nginx简介 4
1.3 选择Nginx的理由 5
1.3.1 它可以高并发连接 5
1.3.2 内存消耗少 7
1.3.3 配置文件非常简单 8
1.3.4 成本低廉 8
1.3.5 支持Rewrite重写规则 9
1.3.6 内置的健康检查功能 9
1.3.7 节省带宽 9
1.3.8 稳定性高 9
1.3.9 支持热部署 9
1.4 Nginx与Apache、Lighttpd的综合对比 9
第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的启动、停止、平滑重启 16
2.4.1 Nginx的启动 17
2.4.2 Nginx的停止 17
2.5 Nginx的平滑重启 18
2.6 Nginx的信号控制 18
2.7 Nginx的平滑升级 19
第3章 Nginx的基本配置与优化 21
3.1 Nginx的完整配置示例 21
3.2 Nginx的虚拟主机配置 23
3.2.1 什么是虚拟主机 23
3.2.2 配置基于IP的虚拟主机 24
3.2.3 配置基于域名的虚拟主机 27
3.3 Nginx的日志文件配置与切割 29
3.3.1 用log_format指令设置日志格式 29
3.3.2 用access_log指令指定日志文件存放路径 30
3.3.3 Nginx日志文件的切割 32
3.4 Nginx的压缩输出配置 33
3.5 Nginx的自动列目录配置 35
3.6 Nginx的浏览器本地缓存设置 36
第4章 Nginx与PHP(FastCGI)的安装、配置与优化 38
4.1 获取相关开源程序 39
4.2 安装PHP 5.2.10(FastCGI模式) 42
4.3 安装Nginx 0.8.15 52
4.4 配置开机自动启动Nginx + PHP 55
4.5 优化Linux内核参数 55
4.6 在不停止Nginx服务的情况下平滑变更Nginx配置 56
4.7 编写每天定时切割Nginx日志的脚本 56
第5章 Nginx与JSP、ASP.NET、Perl的安装与配置 59
5.1 Nginx与JSP(Tomcat)在Linux上的安装、配置 59
5.2.1 Tomcat和JDK的安装 60
5.1.2 Nginx与Tomcat的配置 61
5.2 Nginx与ASP.NET(Mono+FastCGI)在Linux上的安装、配置 63
5.2.1 Mono的安装 63
5.2.2 Nginx与ASP.NET(Mono+FastCGI)的配置 64
5.3 Nginx与Perl(FastCGI)在Linux上的安装、配置 67
5.3.1 Perl(FastCGI)的安装 67
5.3.2 Nginx与Perl(FastCGI)的配置 70
第6章 Nginx HTTP负载均衡和反向代理的配置与优化 73
6.1 什么是负载均衡和反向代理 73
6.1.1 负载均衡 73
6.1.2 反向代理 73
6.2 常见的Web负载均衡方法 74
6.2.1 用户手动选择方式 74
6.2.2 DNS轮询方式 75
6.2.3 四/七层负载均衡设备 77
6.2.4 多线多地区智能DNS解析与混合负载均衡方式 81
6.3 Nginx负载均衡与反向代理的配置实例 83
6.3.1 完整的Nginx反向代理示例如代码6-3所示 83
6.3.2 Nginx负载均衡与反向代理实现动、静态网页分离 86
6.4 Nginx负载均衡的HTTP Upstream 模块 88
6.4.1 ip_hash指令 89
6.4.2 server指令 89
6.4.3 upstream 指令 90
6.4.4 upstream相关变量 90
6.5 Nginx负载均衡服务器的双机高可用 91
第7章 Nginx的Rewrite规则编写实例 99
7.1 什么是Nginx的Rewrite规则 99
7.2 Nginx Rewrite规则相关指令 99
7.2.1 break指令 100
7.2.2 if 指令 100
7.2.3 return 指令 101
7.2.4 rewrite 指令 104
7.2.5 set 指令 106
7.2.6 uninitialized_variable_warn 指令 106
7.2.7 Nginx Rewrite可以用到的全局变量 106
7.3 PCRE正则表达式语法 107
7.4 Nginx的Rewrite规则编写实例 109
7.5 Nginx与Apache的Rewrite规则实例对比 112
7.5.1 简单的Nginx与Apache Rewrite重写规则 112
7.5.2 允许指定的域名访问本站,其他域名一律跳转到http://www.aaa.com 113
7.5.3 URL重写与反向代理同时进行 114
7.5.4 指定URL之外的URL进行Rewrite跳转 114
7.5.5 域名前缀作为重写规则变量的示例 115
第8章 Nginx模块开发 117
8.1 Nginx模块概述 117
8.2 Nginx模块编写实践 119
8.2.1 Hello World模块编写与安装 119
8.2.2 Hello World模块分析 121
第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块 127
9.1 什么是Web缓存? 127
9.2 Nginx的Web缓存服务 128
9.2.1 proxy_cache相关指令集 128
9.2.2 proxy_cache完整示例 130
9.2.3 fastcgi_cache相关指令集 131
9.3 新浪网开源软件项目——基于Nginx的NCache网页缓存系统 135
9.3.1 NCACHE模块的安装 136
9.3.2 NCACHE配置文件编写 136
9.3.3 NCACHE的管理维护 138
9.3.4 NCACHE后端内容源服务器设置 139
第10章 Nginx在国内知名网站中的应用案例 141
10.1 Nginx反向代理与负载均衡类网站应用案例 142
10.1.1 Nginx负载均衡在新浪播客中的应用 142
10.1.2 Nginx负载均衡在金山逍遥网中的应用 146
10.2 Nginx+PHP类网站应用案例 152
10.2.1 Nginx+PHP 在金山逍遥网CMS发布系统中的应用 152
10.2.2 Nginx+PHP 在某分类信息网站中的应用 154
第11章 Nginx的非典型应用实例 171
11.1 用HTTPS(SSL)构建一个安全的Nginx Web服务器 171
11.1.1 自行颁发不受浏览器信任的SSL证书 171
11.1.2 向CA机构申请颁发受浏览器信任的SSL证书 174
11.2 采用Nginx搭建FLV视频服务器 176
11.2.1 采用Nginx的Flv Stream模块搭建HTTP下载方式的FLV视频服务器 176
11.2.2 采用Nginx实现FMS/Red5流媒体视频服务器的负载均衡 177
11.3 Nginx+PHP+MySQL在小内存VPS服务器上的优化 179
11.3.1 增加swap交换文件 180
11.3.2 Nginx的主配置文件(nginx.conf)优化 180
11.3.3 PHP(FastCGI)的配置优化 182
11.3.4 MySQL 5.1 配置优化 182
11.4 采用Nginx搭建正向代理服务器 184
第12章 Nginx的核心模块 185
12.1 主模块指令 185
12.1.1 daemon 指令 185
12.1.2 env 指令 186
12.1.3 debug_points 指令 186
12.1.4 error_log 指令 186
12.1.5 log_not_found 指令 187
12.1.6 include 指令 188
12.1.7 lock_file 指令 188
12.1.8 master_process 指令 188
12.1.9 pid 指令 189
12.1.10 ssl_engine 指令 189
12.1.11 timer_resolution 指令 189
12.1.12 try_files 指令 189
12.1.13 user 指令 191
12.1.14 worker_cpu_affinity 指令 191
12.1.15 worker_priority 指令 192
12.1.16 worker_processes 指令 192
12.1.17 worker_rlimit_core 指令 193
12.1.18 worker_rlimit_nofile 指令 193
12.1.18 worker_rlimit_sigpending 指令 193
12.1.19 working_directory 指令 193
12.2 主模块变量 193
12.3 事件模块指令 194
12.3.1 accept_mutex指令 194
12.3.2 accept_mutex_delay指令 194
12.3.3 debug_connection 指令 194
12.3.4 use 指令 195
12.3.5 worker_connections 指令 195
第13章 Nginx的标准HTTP模块 197
13.1 HTTP的核心模块 197
13.1.1 alias 指令 197
13.1.2 client_body_in_file_only 指令 198
13.1.3 client_body_in_single_buffer 指令 198
13.1.4 client_body_buffer_size 指令 198
13.1.5 client_body_temp_path 指令 198
13.1.6 client_body_timeout 指令 199
13.1.7 client_header_buffer_size 指令 199
13.1.8 client_header_timeout 指令 199
13.1.9 client_max_body_size 指令 199
13.1.10 default_type 指令 200
13.1.11 directio 指令 200
13.1.12 error_page 指令 201
13.1.13 if_modified_since 指令 201
13.1.14 index 指令 202
13.1.14 internal 指令 202
13.1.15 keepalive_timeout 指令 203
13.1.16 keepalive_requests 指令 203
13.1.17 large_client_header_buffers 指令 204
13.1.18 limit_except 指令 204
13.1.19 limit_rate 指令 204
13.1.20 limit_rate_after 指令 205
13.1.21 listen 指令 205
13.1.22 location 指令 206
13.1.24 log_not_found 指令 207
13.1.25 log_subrequest 指令 207
13.1.26 msie_padding 指令 208
13.1.27 msie_refresh 指令 208
13.1.28 open_file_cache 指令 208
13.1.29 open_file_cache_errors 指令 209
13.1.30 open_file_cache_min_uses 指令 209
13.1.31 open_file_cache_valid 指令 209
13.1.32 optimize_server_names 指令 209
13.1.33 port_in_redirect指令 210
13.1.34 recursive_error_pages指令 210
13.1.35 resolver指令 210
13.1.36 resolver_timeout指令 210
13.1.37 root指令 211
13.1.38 satisfy_any指令 211
13.1.39 send_timeout指令 211
13.1.40 sendfile指令 211
13.1.41 server指令 212
13.1.42 server_name指令 212
13.1.43 server_name_in_redirect指令 214
13.1.44 server_names_hash_max_size指令 214
13.1.45 server_names_hash_bucket_size指令 214
13.1.46 server_tokens指令 215
13.1.47 tcp_nodelay指令 215
13.1.48 tcp_nopush指令 215
13.1.49 try_files指令 215
13.1.50 types指令 216
13.1.51 HTTP核心模块中可以使用的变量 216
13.2 HTTP Upstream模块 219
13.3 Http Access 模块 219
13.3.1 allow 指令 219
13.3.2 deny 指令 219
13.4 HTTP Auth Basic 模块 220
13.4.1 auth_basic 指令 220
13.4.2 auth_basic_user_file 221
13.5 Http Autoindex 模块 221
13.5.1 autoindex 指令 221
13.5.2 autoindex_exact_size 指令 222
13.5.3 autoindex_localtime 指令 222
13.6 Http Browser 模块 222
13.6.1 ancient_browser 指令 223
13.6.2 ancient_browser_value 指令 223
13.6.3 modern_browser 指令 223
13.6.4 modern_browser_value 指令 225
13.7 Http Charset 模块 226
13.7.1 charset 指令 226
13.7.2 charset_map 指令 226
13.7.3 override_charset 指令 228
13.7.4 source_charset 指令 228
13.8 Http Empty Gif 模块 228
13.8.1 empty_gif 指令 228
13.9 Http Fcgi 模块 228
13.9.1 fastcgi_buffers 指令 229
13.9.2 fastcgi_buffer_size 指令 230
13.9.3 fastcgi_cache 指令 230
13.9.4 fastcgi_cache_key 指令 230
13.9.5 fastcgi_cache_methods 指令 230
13.9.6 fastcgi_index 指令 231
13.9.7 fastcgi_hide_header 指令 231
13.9.8 fastcgi_ignore_client_abort 指令 231
13.9.9 fastcgi_intercept_errors 指令 231
13.9.10 fastcgi_max_temp_file_size 指令 232
13.9.11 fastcgi_param 指令 232
13.9.12 fastcgi_pass 指令 233
13.9.13 fastcgi_pass_header 指令 234
13.9.14 fastcgi_read_timeout 指令 234
13.9.15 fastcgi_redirect_errors 指令 234
13.9.16 fastcgi_split_path_info 指令 234
13.10 Geo 模块 235
13.10.1 geo指令 236
13.11 Gzip 模块 237
13.11.1 gzip指令 238
13.11.2 gzip_buffers指令 238
13.11.3 gzip_comp_level指令 239
13.11.4 gzip_min_length指令 239
13.11.5 gzip_http_version指令 239
13.11.6 gzip_proxied指令 240
13.11.7 gzip_types指令 240
13.12 Http Headers模块 241
13.12.1 add_header指令 242
13.12.2 expires指令 242
13.13 Http Index模块 243
13.13.1 index指令 243
13.14 Http Referer模块 243
13.14.1 valid_referers指令 244
13.15 Http Limit Zone模块 244
13.15.1 limit_zone指令 245
13.15.2 limit_conn指令 245
13.16 Http Limit Req模块 246
13.16.1 limit_req_zone指令 246
13.16.2 limit_req指令 247
13.17 Http Log模块 248
13.17.1 access_log指令 248
13.17.2 log_format指令 249
13.17.3 log_format_combined指令 249
13.17.4 open_log_file_cache指令 250
13.18 Http Map模块 250
13.18.1 map指令 251
13.18.2 map_hash_max_size指令 252
13.18.3 map_hash_bucket_size指令 252
13.19 Http Memcached模块 252
13.19.1 memcached_pass指令 254
13.19.2 memcached_connect_timeout指令 255
13.19.3 memcached_read_timeout指令 255
13.19.4 memcached_send_timeout指令 255
13.19.5 memcached_buffer_size指令 256
13.19.6 memcached_next_upstream指令 256
13.19.7 Http Memcached模块中的变量 256
13.19.8 第三方的Memcached模块 256
13.20 Http Proxy模块 257
13.20.1 proxy_buffer_size指令 257
13.20.2 proxy_buffering指令 257
13.20.3 proxy_buffers指令 258
13.20.4 proxy_busy_buffers_size指令 258
13.20.5 proxy_cache相关指令集 259
13.20.6 proxy_connect_timeout指令 259
13.20.7 proxy_headers_hash_bucket_size指令 259
13.20.8 proxy_headers_hash_max_size指令 259
13.20.9 proxy_hide_header指令 260
13.20.10 proxy_ignore_client_abort指令 260
13.20.11 proxy_ignore_headers指令 260
13.20.12 proxy_intercept_errors指令 261
13.20.13 proxy_max_temp_file_size指令 261
13.20.14 proxy_method指令 261
13.20.15 proxy_next_upstream指令 262
13.20.16 proxy_pass指令 263
13.20.17 proxy_pass_header指令 264
13.20.18 proxy_pass_request_body指令 265
13.20.19 proxy_pass_request_headers指令 265
13.20.20 proxy_redirect指令 265
13.20.21 proxy_read_timeout指令 266
13.20.22 proxy_redirect_errors指令 267
13.20.23 proxy_send_lowat指令 267
13.20.24 proxy_send_timeout指令 267
13.20.25 proxy_set_body指令 268
13.20.26 proxy_set_header指令 268
13.20.27 proxy_store指令 269
13.20.28 proxy_store_access指令 270
13.20.29 proxy_temp_file_write_size指令 271
13.20.30 proxy_temp_path指令 271
13.20.31 proxy_upstream_fail_timeout指令 271
13.20.32 proxy_upstream_max_fails指令 271
13.20.33 Http Proxy模块的变量 272
13.21 Http Rewrite模块 272
13.22 Http SSI模块 272
13.22.1 ssi指令 273
13.22.2 ssi_silent_errors指令 273
13.22.3 ssi_types指令 273
13.22.4 ssi_value_length指令 274
13.22.5 SSI命令 274
13.22.6 SSI变量 276
13.27 Http Userid模块 277
13.27.1 userid指令 277
13.27.2 userid_domain指令 277
13.27.3 userid_expires指令 278
13.27.4 userid_name指令 278
13.27.5 userid_p3p指令 278
13.27.6 userid_path指令 279
13.27.6 userid_service指令 279
第14章 Nginx的其他HTTP模块 280
14.1 Http Addition模块 280
14.1.1 add_before_body 281
14.1.2 add_after_body 281
14.1.3 addition_types 281
14.2 Embedded Perl模块 281
14.2.1 perl 指令 283
14.2.2 perl_modules 指令 283
14.2.3 perl_require 指令 283
14.2.4 perl_set 指令 283
14.2.5 从SSI调用Perl脚本 284
14.3 Flv Stream模块 286
14.3 flv 指令 287
14.4 Http Gzip Static模块 287
14.4.1 gzip_static 指令 287
14.4.2 gzip_http_version 指令 287
14.4.3 gzip_proxied指令 288
14.5 Http Random Index模块 288
14.5.1 random_index 指令 288
14.6 Http Geo IP模块 288
14.6.1 geoip_country 指令 289
14.6.2 geoip_city 模块 289
14.7 Http RealIp模块 290
14.7.1 set_real_ip_from 指令 290
14.7.2 real_ip_header 指令 291
14.8 Http SSL模块 291
14.8.1 在多个server{......}虚拟主机中使用通配符SSL证书 294
14.8.2 ssl 指令 294
14.8.3 ssl_certificate 指令 294
14.8.4 ssl_certificate_key 指令 295
14.8.5 ssl_client_certificate 指令 295
14.8.6 ssl_dhparam 指令 295
14.8.7 ssl_ciphers 指令 295
14.8.8 ssl_crl 指令 296
14.8.9 ssl_prefer_server_ciphers 指令 296
14.8.10 ssl_protocols 指令 296
14.8.11 ssl_verify_client 指令 296
14.8.12 ssl_verify_depth 指令 296
14.8.13 ssl_session_cache 指令 297
14.8.14 ssl_session_timeout 指令 297
14.8.15 ssl_engine 指令 298
14.9 Http Stub Status模块 298
14.9.1 stub_status 指令 299
14.10 Http Sub模块 299
14.10.1 sub_filter 指令 300
14.10.2 sub_filter_once 指令 300
14.10.3 sub_filter_types 指令 300
14.11 Http Dav模块 300
14.11.1 dav_access 指令 301
14.11.2 dav_methods 指令 301
14.11.3 create_full_put_path 指令 301
14.12 Google Perftools模块 302
14.12.1 google_perftools_profiles 指令 302
14.13 Http XSLT模块 302
14.13.1 xslt_entities 指令 303
14.13.2 xslt_stylesheet 指令 303
14.13.3 xslt_types 指令 304
14.14 Http Secure Link模块 304
14.14.1 secure_link_secret 指令 304
14.14.2 $secure_link 变量 305
14.15 Http Image Filter模块 306
14.15.1 image_filter 306
14.15.2 image_filter_buffer 306
14.15.3 image_filter_jpeg_quality 307
14.15.4 image_filter_transparency 307
Lucky cola