###Nginx概述
1.一个轻量级代理服务器,本身不支持动态语言的解析和执行,而是把网络请求转发给动态语言的解析器进程,通过网络交互方式传入请求数据,接收响应数据,然后返回给客户端。
2.Nginx以高性能的负载均衡器,缓存,和web服务器闻名,驱动了全球超过 40% 最繁忙的网站。
3.Nginx适合结合FastCGI运行PHP,JSP,Perl等脚本程序;使用Nginx作为反向代理,可以方便地结合Tomcat部署JavaWeb程序;使用Nginx+Cache缓存插件,用于访问静态的html,图片等,相当于一个CDN了。
###Nginx优点总结
1. 高并发:能支持1~2万甚至更多的并发连接(静态小文件环境下)
2. 内存消耗少:在3万并并发下,开启适合nginx进程消耗不到200M的内存。
3. 可做http反向代理,即负载均衡的功能,相当于专业的haproxy软件或lvs的功能
4. 内置对RS服务器器健康检查功能:如果nginx proxy后端某台web服务器宕机,不会影响前端的访问,这个功能还比较弱,需要后续改进。
5. 通过cache插件(cache_purge)可以实现类squid等专业的缓存软件实现的功能。
6. nginx最主要的有点是:支持kqueue(FreeBSD 4.1+),eqoll(Linux 2.6+)等网络IO事件模型,由此支持高并发。
###Nginx我的总结
* Nginx的职能非常专一,就是接受http请求,然后交给对应的fastCGI程序处理请求,然后接收处理后的响应数据,最后将数据返回给客户端。
* Nginx是主从结构,一个master,很多个worker,master负责接收服务器管理员指令,然后发送给worker,从而实现操作服务器的目的。worker是真正干活的,一个worker负责处理一个请求。
* Nginx通过网络和FastCGI程序进行通信,传输和接收数据。
总结至:http://blog.csdn.net/hguisu/article/details/8930668
###Nginx模块常规的HTTP请求和响应的过程
![](https://box.kancloud.cn/1b2781c243c9d4e22460a372b9fd0eb9_533x365.png)
###nginx的进程模型
![](https://box.kancloud.cn/332ee7c14f2aec722766395ed7486b6d_570x366.png)
###Nginx+FastCGI运行过程
![](https://box.kancloud.cn/fe95010fc6ba1fc4a8eb1e1f26f6bda4_600x283.png)
###PHP FPM
PHP-FPM是管理FastCGI的一个管理器,它作为PHP的插件存在,在安装PHP要想使用PHP-FPM时在老php的老版本(php5.3.3之前)就需要把PHP-FPM以补丁的形式安装到PHP中,而且PHP要与PHP-FPM版本一致,这是必须的)
PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
PHP5.3.3已经集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM。
fastcgi已经在php5.3.5的core中了,不必在configure时添加 --enable-fastcgi了。老版本如php5.2的需要加此项。