计划: 

 简单用过,看书全面了解下。 

 1、《实战nginx:取代apache的高性能Web服务器》 

 内容:安装、配置和优化、PHP FastCGI、JSP、反向代理、负载均衡、Rewrite、缓存、模块介绍 

 按顺序过一遍,重点看反向代理、负载均衡、rewrite、缓存和模块介绍。 

 2、《深入理解 Nginx:模块开发与架构解析 / 陶辉著 . —北京:机械工业出版社,2013.3》978-7-111-41478-0 

 这本书讲:如何基于nginx开发扩展模块。 

 第一部分讲怎么用,然后分析架构,讲怎么开发。 

 “Nginx 非常适合开发在传输层以TCP对外提供服务的服务器程序。” 

 读第一部分,其他部分略读。 

 3、《学习nginx http server》 

 内容:安装、http配置、rewrite ssi、php、apache 

 最后简单过一下,查漏补缺 

Book 1:《实战nginx:取代apache的高性能Web服务器》
 --------------------------------- 

 13:25 2014-05-18 
1、简介 

 nginx可以使用epoll和kqueue网路io模型。 

 --------------------------------- 

 13:29 2014-05-18 
2、安装和配置 

 http://www.nginx.net/ 
 Mainline version 1.7,Stable version 1.6,选1.7。 

 windows版,linux版都要。 

 apt库里有没有呢?最新版多少? 

 http://nginx.org/en/download.html 

 http://nginx.org/download/nginx-1.7.0.tar.gz 

 http://nginx.org/download/nginx-1.7.0.zip 


 源码在线看:http://trac.nginx.org/nginx/browser。 


 测试过的操作系统和平台 

 Linux 2.2 — 3 / i386; Linux 2.6 — 3 / amd64; 

 Windows XP, Windows Server 2003. 


 我的实验环境: 
Windows 2008 Server R2里面一个Ubuntu 14.04的虚拟机。 


 tar 

 ./configure [各种选项] 

 make 

 make install 


 启动 

 nginx -c nginx.confg 

 查看pid 

 ps -ef | grep nginx 

 停止 

 kill -QUIT pid 

 kill -TERM pid 

 kill -9 nginx 

 检查配置文件 

 nginx -t -c nginx.config 

 平滑重启 

 kill -HUP pid 

 -USR2 : 平滑升级 

 -USR1 : 重新打开日志文件 

 -WINCH : 从容关闭work process 


 --------------------------------- 

14:09 2014-05-18 3、基本配置和优化
中间浪费了三个半小时
 17:24 2014-05-18 GO ON 

 nginx.config 结构 

 events{ 


 } 

 http{ 

 
server{ 

 
} 

 
server{ 

 
} 

 } 


 nginx支持多种虚拟主机配置:基于ip的,基于域名的,基于端口的。 


 log_format 可以引用好多变量! 

 附录会有一个完整列表的,含各个module的。 


 经过反向代理后,$http_x_forwarded_for才是客户端真实IP,$remote_addr不是。 

 浏览器侧缓存务必设置,特别是针对图片、js、css、swf等变化少的内容。 


 --------------------------------- 

18:14 2014-05-18 4、FastCGI
PHP or Perl
 location ~ .*\.(php|php5)?$ 

 { 

 
fastcgi_pass 127.0.0.1:9000; 

 
fastcgi_index index.php; 

 
include fcgi.conf; 

 } 


设置开机自动启动
Linux操作是我要加强的,有必要找本书看看。网络设置啊,系统设置啊,脚本辨析啊啥的。
 vi /etc/rc.local 

 --------------------------- 

 ulimit -SHn 65535 


 /../php/sbin/php-fpm start 

 /../sbin/nginx 


 --------------------------------- 

 18:40 2014-05-18 
5、JSP 

 嗯!提起精神。 


 upstream tomcat_server{ 

 
server 127.0.0.1:8000; 
}
这里可以好多Server。可以ip_hash,可能负载不均衡,但不用复制Session。复制Session会把集群中每台服务器内存搞满。
server{
 
location ~ \.(jsp|jspx|do)?${ 

 
proxy_set_header Host $host; 

 
proxy_set_header X-Forwarded-For $remote_addr; 

 
proxy_pass http://tomcat_server; 

 
} 

 } 


---------------------------------
 18:46 2014-05-18 
 6、HTTP负载均衡和反向代理 


 复习一下OSI 

 1、物理 

 2、数据链路 

 3、网络:IP、IPX 

 4、传输! TCP、UDP 开始重要了 

 5、会话 

 6、表示 

 7、应用:HTTP、FTP、Telnet、SNMP等。 


 常见的负载均衡方案在第4层/第7层。 


 传说中的F5。高大上的设备。有国产便宜的吗?深信服、华3。 


 庶民的LVS(Linux Server) 
找书专门看看 


 nginx 

 down 离线 

 backup 非backup的全宕机才启用 

 ip_hash 类似session_sticky 


 upstream 

 proxy_pass 

 fastcgi_pass 


 nginx双机高可用: 

漂移IP;写脚本后台监视,离线转移。
这个应该是用keepalived实现?找文章看看。单机可负载十万,Load Balance的需求可能不大,但HA的需求太大了。是否有module支持呢?
 

 --------------------------------- 

19:23 2014-05-18 7、Rewrite
各种正则表达式
 
PCRE 

 if rewrite set return break 

 = 等于 

 != 不等于 

 ~ 区分大小写 

 ~* 不区分大消息 

 -f 文件存在 

 !-f文件不存在 

 -d 目录存在 

 -e 文件或目录存在 

 -x 文件可执行 


 () 后面可以通过$1-$9访问 


 set 


 7.2.7 可以用到的全局变量 

 $http_cookie 

 $args 



 7.3 PCRE语法!! 

 \ 转移字符 

 ^ 行首 

 $ 行末 

 * 前面的0次或n次 

 + 前面的1次或n次 

 ?前面的0次或1次 


 各种栗子 


 --------------------------------- 

 19:56 2014-05-18 
8、模块开发 

高手比学。

 配置文件包括:main、server、upstream、location 

 不能动态添加模块,需要编译时编译到二进制文件中。 


 handlers处理模块 

 filters或绿模块 

 load-balancers负载均衡模块 

 8.1 

 模块相当于aop中的方面,可以挂载在不同处理事件。 


 往下不细看了。 


---------------------------------
 20:02 2014-05-18 
9、缓存 

 出名的Squid 


 proxy_cache指令 

 新浪网开发的ncache模块,充分利用多核,比squid快 


 20:29 2014-05-18 


 proxy_cache_path 

 proxy_cache_method 

 proxy_cache_valid 

 proxy_cache_key 


 ./configure --add-module=../ngx_cache_purge-1.0 

 创建 proxy_temp_path 和 proxy_cache_path 必须在同一分区 


 --------------------------------- 

 20:41 2014-05-18 
10、案例 


 新浪视频 

 金山逍遥网 

 CMS 

 视频网站 


rsync,稍后看看。 


 --------------------------------- 

 21:05 2014-05-18 
11、非典型应用 


 HTTPS 

 ./configure --with-http_ssl_module 

 自发证书 


 创建私钥 

 openssl genrsa -des3 -out api.bz.key 1024 

 openssl req -new -key aop.bz.key -out api.bz.csr 

 openssl rsa -in api.bz.key -out api.bz_nopass.key 

 创建证书 

 openssl req -new -x509 -days 3650 -key api.bz_nopass.key -out api.bz.crt 


 得到私钥文件:api.bz_nopass.key 

 证书:api.bz.crt 


server{
 
ssl on; 

 
ssl_certificate api.bz.crt; 

 
ssl_certificate_key api.bz_nopass.key; 

 } 


 向CA申请证书 


 同样,生成私钥 

 http://startssl.com 提供免费证书。 


 FLV视频服务器 

 HTTP下载,或者流媒体(Flash Media Server/RTMP) 

 nginx提供flv stream模块,支持拖动 

 ./configure --with-http_flv_module 

 limit_rate_after 3m 

 limit_rate 512k 

 添加关键帧 

 找个flv播放器 



 流媒体fms/red5负载均衡 


 VPS(Virtual Private Server)虚拟机 

 最大指标是内存。 


 正向代理 


 --------------------------------- 

 21:27 2014-05-18 
12、核心模块 

 --------------------------------- 

 21:34 2014-05-18 
13、标准HTTP模块 

 --------------------------------- 

 21:53 2014-05-18 
14、其他模块 

 12、13、14是参考手册,应该仔细通读,随时备查。 

 --------------------------------- 

 21:55 2014-05-18 
15、邮件模块 

 这个也很实用! 



Book 2:
 迅速把 《 
深入理解 Nginx:模块开发与架构解析》前3章过一遍吧。 


 第1章 安装 

 讲得非常细,明天上班路上看吧。 

 第2章 配置 

 非常详细! 

 第3章 如何编写HTTP模块 

 太细了,照着做可以做一个Hello,world!为什么我有种想写c的冲动。 

 nginx的设计和代码都很棒,真想仔细看看。 

 可惜时间上不好安排。 

 有舍必有得。 



Book3、《学习nginx http server》 

 靠! 

 连linux基本命令都讲,从mkdir讲起。 

 入门必读!! 


 创建用户组,确实不会,应该找时间好好看看。 


 Ch1 linux基本操作 

 Ch2 安装 22:11 2014-05-18 

 Ch3 配置 22:12 2014-05-18 

 Ch4 HTTP配置 22:13 2014-05-18 

 Ch5 模块配置 22:14 2014-05-18 

 Ch6 PHP、Python 22:15 2014-05-18 

 Ch7 Apache 

 Ch8 从Apache移植 



 22:17 2014-05-18 吃了感冒药,困得快不行了。