第1部分 Nginx与PHP 2
第1章 环境部署 2
1.1 php-fpm的安装与测试 2
1.1.1 下载并安装PHP 2
1.1.2 启动php-fpm 3
1.2 php-fpm的目录结构 4
1.2.1 etc/目录 4
1.2.2 bin/目录 11
1.2.3 sbin/目录 18
1.2.4 php-fpm命令 18
1.3 管理php-fpm 18
1.3.1 编写init启动脚本 18
1.3.2 添加init启动 22
1.4 认识FastCGI模块 22
1.4.1 配置示例 22
1.4.2 指令 23
1.4.3 变量 32
1.4.4 fastcgi_cache与fastcgi-store的区别 32
1.4.5 被传递到FastCGI服务器的参数 32
1.5 与FastCGI模块相关的配置文件 32
1.5.1 配置文件fastcgi.conf和fastcgi_params 33
1.5.2 配置文件fastcgi.conf和fastcgi_params的关系 33
1.6 Nginx和PHP的结合 35
第2章 PHP访问Memcached 39
2.1 第一个实例 39
2.1.1 安装memcache 40
2.1.2 memcache提供的方法 41
2.1.3 测试memcache 42
2.1.4 使用memcache.php 43
2.1.5 安装memcached 47
2.1.6 memcached提供的方法 48
2.1.7 测试memcached 49
2.2 第二个实例 51
2.2.1 写入Memcached的Nginx配置 51
2.2.2 访问测试及日志分析 53
2.3 手动清除Memcached缓存 56
2.3.1 基于命令行方式清除Memcached缓存 56
2.3.2 基于应用程序的方式清除Memcached缓存 58
第3章 php-fpm的状态 61
3.1 添加设置 61
3.2 访问测试 62
第2部分 Nginx与Python 65
第4章 uWSGI服务器 65
4.1 uwsgi协议 65
4.1.1 uwsgi数据包头 65
4.1.2 uwsgi数据包的类型 65
4.1.3 uwsgi的变量 67
4.2 uWSGI服务器 68
4.2.1 uWSGI服务器的功能 68
4.2.2 uWSGI服务器的配置选项 69
4.2.3 uWSGI服务器配置文件的格式 88
4.2.4 使用UDP方式来处理uWSGI的日志 89
4.2.5 用于记录日志的ZeroMQ 90
4.2.6 Emperor模式 90
4.2.7 在worker之间共享数据:共享内存 96
4.2.8 uWSGI缓存架构 97
4.2.9 uWSGI队列管理器 100
4.2.10 嵌入式SNMP服务器 102
4.2.11 uWSGI集群平台 103
4.2.12 uWSGI订阅系统 104
4.2.13 uWSGI的异步(async)模式 105
4.2.14 uWSGI虚拟主机模式 109
4.2.15 模块别名的使用 111
4.2.16 uGreen的使用 113
4.2.17 uwsgi协议的变量 115
4.2.18 管理标志位 116
4.2.19 运行在Nginx后的uWSGI 117
第5章 Nginx的uwsgi模块 122
5.1 示例配置 122
5.2 指令 122
5.3 传递到uWSGI服务器的参数 131
5.4 使用配置 131
第6章 环境部署 134
6.1 安装Nginx 134
6.1.1 下载ngx_cache_purge模块 134
6.1.2 安装Nginx及ngx_cache_purge模块 135
6.2 安装Python 135
第7章 实例运行 138
7.1 实例1:运行开发服务器 138
7.1.1 创建项目 138
7.1.2 添加应用 139
7.2 实例2:以uWSGI方式运行 140
7.2.1 编写helloworld模块 140
7.2.2 修改Nginx配置文件 140
7.2.3 启动uWSGI服务器 141
7.3 实例3:使用Django框架 142
7.3.1 编写wsgi.py模块 142
7.3.2 命令行执行uWSGI服务器启动 143
7.4 实例4:一个uWSGI实例实现对多个虚拟主机的支持 147
7.4.1 下载并安装setuptools工具 147
7.4.2 安装VirtualEnv 148
7.5 实例5:分别监听在不同端口上的两个uWSGI实例 155
7.6 实例6:针对Nginx uwsgi模块应用举例的一个具体实现 161
7.7 实例7:集群的实现 165
7.8 实例8:会话存储 168
7.8.1 第一种情况:使用基于数据库的方式 169
7.8.2 第二种情况:使用基于Memcached的方式 176
7.8.3 第三种情况:同时使用数据库和Memcached 180
第8章 缓存 181
8.1 环境搭建 181
8.2 Django的缓存 182
8.2.1 相关的选项 183
8.2.2 缓存方式 185
8.2.3 缓存策略 187
8.2.4 关于中间件 190
8.3 缓存的实现 191
8.3.1 基于Memcached服务器作为缓存的具体实施 191
8.3.2 基于本地内存作为后端缓存的实施 210
8.3.3 基于上游服务器缓存的实施 211
8.4 模块cache_purge 220
第9章 会话 222
9.1 启用会话功能 222
9.2 配置存储会话引擎 223
9.2.1 使用后台数据库存储会话 223
9.2.2 与数据库相关的选项设置 223
9.2.3 使用缓存存储会话 224
9.2.4 使用基于文件的缓存 225
9.3 会话的使用 225
9.3.1 在视图中使用会话 225
9.3.2 在视图之外使用会话 227
9.3.3 使用Session对象指南 228
9.4 测试客户端浏览器是否接受cookie 229
9.5 保存会话的时机 229
9.6 清除会话表 230
9.7 浏览器关闭会话与持久会话 230
9.8 与会话相关的设置选项 231
第3部分 Nginx与Perl 234
第10章 Nginx提供Perl CGI访问 234
10.1 CGI的实现 234
10.1.1 方法1 234
10.1.2 方法2 242
10.1.3 使用perlinfo.cgi 250
10.1.4 启动脚本 251
10.1.5 部署应用 252
第11章 Nginx与Perl FastCGI 253
11.1 Perl FastCGI的相关安装 253
11.2 Nginx和Perl的结合 258
11.2.1 三种结合方式 258
11.2.2 访问测试 261
11.2.3 缓存清除 262
11.3 Perl访问Memcached 262
11.3.1 通过Cache::Memcached方式 263
11.3.2 通过Cache::Memcached::Fast方式 275
11.3.3 通过Memcached::libmemcached方式 292
11.3.4 通过Cache::Memcached::libmemcached方式 298
第12章 Nginx通过内置的Perl模块执行Perl程序 307
第4部分 Nginx与Java 318
第13章 环境部署 318
13.1 下载并安装JDK 318
13.2 下载并安装Tomcat 319
13.3 Tomcat的目录结构 320
13.3.1 bin/目录 320
13.3.2 conf/目录 323
13.3.3 logs/目录 324
13.3.4 work/目录 325
13.3.5 lib/目录 325
13.3.6 temp/目录 325
13.3.7 webapps/目录 325
13.4 管理Tomcat 326
13.4.1 使用jsvc 326
13.4.2 分析Tomcat7.sh文件 328
13.4.3 使用catalina.sh 334
第14章 Nginx与Tomcat的结合 335
14.1 配置示例 335
14.2 指令 335
14.3 变量 348
14.4 使用配置 349
第15章 配置server.xml文件 351
15.1 第一部分:XML信息 354
15.2 第二部分:server元素 354
15.3 第三部分:Listener元素监听器的设置 355
15.3.1 Listener的属性 356
15.3.2 Listener的标准执行 356
15.4 第四部分:全局命名资源设定 360
15.4.1 Environment元素 360
15.4.2 Resource元素 361
15.4.3 ResourceLink元素 363
15.5 第五部分:Service元素 363
15.6 第六部分:线程 364
15.7 第七部分:连接器Connector 366
15.7.1 第一种连接器:HTTP Connector 366
15.7.2 第二种连接器:AJP Connector 375
15.8 第八部分:Engine的设定 375
15.8.1 Engine的属性 376
15.8.2 嵌套的组件 376
15.9 第九部分:集群的设定 378
15.9.1 文件server.xml的原始配置 378
15.9.2 集群配置文件 378
15.9.3 Cluster元素 379
15.9.4 Cluster元素可嵌套的元素 380
15.9.5 Cluster元素的属性 380
15.9.6 Cluster Manager元素 381
15.9.7 Channel元素的属性 383
15.9.8 Cluster/Valve元素 394
15.9.9 Cluster/Deployer元素 395
15.9.10 ClusterListener元素 396
15.9.11 emcachedBackupSessionManager配置属性 396
15.9.12 nginx-upstream-jvm-route模块 399
15.10 第十部分:认证域 408
15.10.1 JDBC Database Realm 409
15.10.2 DataSource Database Realm 414
15.10.3 JNDI Directory Realm 417
15.10.4 Memory Based Realm 429
15.10.5 UserDatabase Realm 432
15.10.6 JAAS Realm 434
15.10.7 Combined Realm 435
15.10.8 LockOut Realm 436
15.11 第十一部分:虚拟主机 438
15.11.1 Tomcat与Nginx的结合 438
15.11.2 Host元素的属性 439
15.11.3 Host元素的特殊功能 442
15.11.4 主机(Host)名字(name)的别名(Alias) 442
15.12 第十二部分:Valve设置 443
15.12.1 Access Log Valve 443
15.12.2 Access Log Valve支持的属性配置 444
15.12.3 远程地址过滤 446
15.12.4 远程主机过滤 447
15.12.5 单点登录 448
15.12.6 基本认证Valve 448
15.12.7 摘要认证Valve 450
15.12.8 Form认证Valve 452
15.12.9 SSL认证Valve 453
15.12.10 SPNEGO Valve 455
15.12.11 Remote IP Valve 456
15.12.12 Crawler Session Manager Valve 457
15.12.13 用户的web应用程序 458
15.13 Tomcat集群与Memcached存储会话 459
15.13.1 环境部署 459
15.13.2 使用Memcached存储会话 460
15.13.3 粘贴性会话与非粘贴性会话 490
第16章 配置web.xml文件 491
16.1 conf/web.xml 491
16.1.1 配置文件内容分析 491
16.1.2 配置文件指令分析 505
16.2 webapps/manager/WEB-INF/web.xml 510
16.2.1 第一部分;与XML文档相关的设置 510
16.2.2 第二部分;servlet映射 511
16.2.3 第三部分;用户数据库角色查询 511
16.2.4 第四部分;定义Web资源的安全限制 512
16.2.5 第五部分;定义应用程序的登录配置 514
16.2.6 第六部分;定义安全角色 525
16.2.7 第七部分;定义错误页 526
16.2.8 第八部分;声明对外部资源的应用 527
16.3 webapps/examples/WEB-INF/web.xml 528
16.3.1 第一部分;定义事件监听器 528
16.3.2 第二部分;servlet的访问 529
16.3.3 第三部分;JSP设置 529
16.3.4 第四部分;有关Web环境变量的配置 536
16.3.5 第五部分;异步处理 537
16.4 webapps/host-manager/WEB-INF/web.xml 539
16.4.1 设定虚拟主机 539
第17章 配置context.xml文件 541
17.1 默认配置文件 541
17.2 Context元素 543
17.2.1 通用属性 543
17.2.2 标准部署 548
17.2.3 Context中嵌套的元素 553
17.3 Manager元素 557
17.3.1 通用属性 557
17.3.2 标准部署 558
17.3.3 标准Manager部署 560
17.3.4 持久性Manager部署 560
第18章 配置tomcat-users.xml文件 563
18.1 默认配置文件 563
18.2 相关指令 563
18.3 分析配置文件 563
第19章 配置catalina.policy文件 565
19.1 默认配置文件 566
19.2 策略格式 572
19.3 相关指令 573
19.4 分析配置文件 584
19.4.1 第一部分:注意事项及版权 584
19.4.2 第二部分:catalina.policy文件说明 584
19.4.3 第三部分:系统代码权限 585
19.4.4 第四部分:CATALINA代码权限 586
19.4.5 第五部分:Web应用程序权限 586
第20章 配置catalina.properties文件 587
20.1 catalina.properties文件 587
20.1.1 类访问控制及加载 590
20.1.2 改变Tomcat的默认属性行为 591
20.2 类载入器 591
20.3 相关的类加载器 591
20.4 Loader的通用属性 593
20.5 Loader标准执行 594
20.6 部署VirtualWebappLoader 594
第21章 在容器元素中可以使用的过滤器 595
21.1 默认字符集过滤器 595
21.1.1 过滤器类的名称 595
21.1.2 初始化参数 595
21.2 预防CSRF过滤器 595
21.2.1 过滤器类的名称 596
21.2.2 初始化参数 596
21.3 Expires过滤器 596
21.3.1 配置示例 597
21.3.2 替代语法 597
21.3.3 生存期头产生的资格 599
21.3.4 过滤器类的名称 599
21.3.5 初始化参数 599
21.3.6 疑难解答 601
21.4 远程地址过滤器 602
21.4.1 过滤器类的名称 602
21.4.2 初始化参数 602
21.5 远程主机过滤器 602
21.5.1 过滤器类的名称 602
21.5.2 初始化参数 603
21.6 远程IP过滤器 603
21.6.1 用于处理“x-forwarded-for”的基本配置 603
21.6.2 用于处理“x-forwarded-for”和“x-forwarded-proto”的基本配置 604
21.6.3 内部代理的高级配置 604
21.6.4 信任代理的高级配置 605
21.6.5 内部和信任代理的高级配置 606
21.6.6 不信任代理的高级配置 607
21.6.7 初始化参数 608
21.7 Request Dumper过滤器 609
21.7.1 过滤器类的名称 609
21.7.2 初始化参数 609
21.7.3 简单配置 609
21.8 WebDAV Fix过滤器 610
21.8.1 过滤器类的名称 610
21.8.2 初始化参数 610
第5部分 Nginx与Ruby 612
第22章 环境部署 612
22.1 安装Ruby 612
22.1.1 安装ruby 612
22.1.2 正确使用Ruby 613
22.2 关于gem工具 613
22.2.1 gem命令概况 614
22.2.2 gem help commands命令 614
22.2.3 常用的gem命令 622
22.2.4 gem的工作目录 625
22.3 安装passenger 630
22.3.1 相关问题 631
22.3.2 下载Passenger 631
22.3.3 README文件 631
22.3.4 第一种方法的安装 632
22.3.6 第二种方法的安装 638
22.3.6 Nginx的相关配置 639
22.4 Phusion Passenger模块配置指令 640
22.4.1 配置Phusion Passenger的指令 640
22.4.2 部署应用程序的指令 641
22.4.3 连接处理指令 642
22.4.4 安全配置指令 644
22.4.5 资源控制和优化指令 646
22.4.6 日志记录和调试指令 650
22.4.7 RoR的特有指令 651
22.4.8 Rack的特有指令 652
22.4.9 弃用指令 652
22.5 分析和系统维护工具 652
22.5.1 检测内存使用情况 653
22.5.2 检查Passenger进程的内部状态 655
22.5.3 显示Passenger的配置信息 659
22.5.4 激活许可 659
22.6 投入生产后的维护 662
22.6.1 升级和降级 662
22.6.2 临时禁用Passenger 663
22.6.3 移动Passenger到其他目录 664
22.6.4 安装多个RoR版本 664
22.6.5 每一次请求之后都重新启动应用程序 664
22.6.6 卸载Passenger 664
22.7 Passenger的相关技术 665
22.7.1 页面缓存支持 665
22.7.2 Passenger检查虚拟主机是否是一个Web应用程序的依据 665
22.7.3 用户切换 666
22.7.4 减少RoR应用程序33%的内存消耗 666
22.8 独立运行Passenger守护进程 667
22.8.1 安装Passenger 667
22.8.2 启动独立运行的Passenger守护进程 668
22.8.3 访问测试 672
22.8.4 认识Passenger命令 672
22.9 Passenger下的Rails 675
22.9.1 启动passenger独立运行守护进程 675
22.9.2 相关的进程 675
22.9.3 访问测试 676
第23章 走进Rails 677
23.1 安装Rails框架 677
23.1.1 查看版本 677
23.1.2 认识rails命令 678
23.1.3 Rails框架实例应用 679
23.2 分析目录结构 682
23.2.1 项目下的文件 682
23.2.2 rake命令 688
23.2.3 bundle命令 704
23.3 项目下的目录及文件 709
23.3.1 app目录 709
23.3.2 config目录 712
23.3.3 db目录 726
23.3.4 doc目录 727
23.3.5 lib目录 727
23.3.6 log目录 728
23.3.7 public目录 728
23.3.8 script目录 728
23.3.9 test目录 728
23.3.10 tmp目录 729
23.3.11 Vendor目录 730
23.3.12 在Rails框架下运行Passenger独立守护进程 730
23.3.13 运行rails的Web服务器 734
23.3.14 Rails应用程序下的rails命令 735
23.3.15 创建项目 739
23.4 认识Rails架构 741
23.4.1 什么是Rails 741
23.4.2 MVC架构 741
23.5 Rails的一般配置 742
23.6 Assets的配置 746
23.7 Generators的配置 747
23.8 配置Middleware 749
23.8.1 中间件 749
23.8.2 方法 751
23.9 配置i18n 752
23.10 Rails环境设置 755
23.11 Rails的组成部分及其配置 755
23.11.1 Action Pack 756
23.11.2 Action Mailer 759
23.11.3 Active Model 760
23.11.4 Active Record 761
23.11.5 Active Resource 762
23.11.6 Active Support 763
23.12 Railties 764
23.12.1 初始化文件 764
23.12.2 初始化事件 764
23.12.3 Rails::Railtie#initializer 765
23.13 Rest 768
23.14 Rails内置的HTTP认证机制 769
23.15 基本身份认证 769
23.15.1 通过app/controllers/application_controller.rb文件实现 769
23.15.2 通过app/controllers/tm_controller.rb文件实现 770
23.16 摘要身份认证 771
第24章 缓存 773
24.1 缓存策略 773
24.1.1 页面缓存 773
24.1.2 Action缓存 775
24.1.3 片段缓存 776
24.2 缓存技术 777
24.2.1 内存缓存技术 778
24.2.2 文件系统缓存技术 778
24.2.3 Memcached服务器技术 779
24.2.4 Ehcache缓存技术 779
24.2.5 自定义缓存技术 780
24.3 Dalli——Memcached的客户端 780
24.3.1 设计Dalli的原因 781
24.3.2 支持的Ruby版本 781
24.3.3 Dalli的安装和使用 782
24.4 实例 785
24.4.1 例1:Ruby语言测试 786
24.4.2 例2:Rails环境测试 787
24.4.3 例3:缓存会话 790
24.4.4 例4:对独立运行的Passenger实现会话存储 792
24.4.5 例5:页面缓存 794
24.4.6 例6:action缓存 796
24.4.7 例7:片段缓存 800
24.4.8 例8:动静分离 803
第6部分 Nginx与ASP.NET第25章 Mono 806
25.1 什么是Mono 806
25.1.1 Mono内核 806
25.1.2 额外组件 806
25.1.3 Mono支持的软硬件环境 807
25.1.4 对.NET的兼容性 807
25.1.5 Mono的获取 808
25.2 Mono的基本使用 808
25.2.1 控制台的Hello World程序 809
25.2.2 Gtk#下的Hello World程序 809
25.2.3 Winforms格式的Hello World程序 810
25.2.4 ASP.Net的Hello World程序 810
25.2.5 安装后的目录结构 811
25.3 mconfig命令 814
25.3.1 命令行用法 814
25.3.2 相关的配置文件 815
25.4 web.config文件 815
25.4.1 第一部分:格式声明 816
25.4.2 第二部分:<system.codedom>标签 816
25.4.3 第三部分:<system.web>标签 816
第26章 Ngi nx与ASP.NET的解决方案 828
26.1 方案一:Nginx+mono+fastcgi-mono-server 828
26.1.1 环境部署 828
26.1.2 走进fastcgi-mono-server服务器 838
26.2 方案二:Nginx+mono+Jexus 841
26.2.1 环境部署 842
26.2.2 走进Jexus web server服务器 845
26.2.3 JWS与Nginx的结合 854
26.2.4 管理JWS 856
26.3 方案三:Nginx+mono+xsp 860
26.3.1 环境部署 860
26.3.2 XSP服务器的使用方法 864
26.3.3 使用FastCGI方式运行 876
第27章 Session存储 879
27.1 存储会话的类型 879
27.1.1 web.config文件 879
27.1.2 存储会话类型设置 880
27.2 状态服务器 884
27.2.1 配置文件 884
27.2.2 使用状态服务器 885
第28章 缓存 888
28.1 动态文件缓存 888
28.1.1 @OutputCache指令 889
28.1.2 基于@OutputCache指令的缓存 891
28.1.3 “平台级”的高速缓存 894
28.1.4 静态文件缓存 895
第29章 Nginx代理IIS 896
后记:Nginx与Apache 897