关于nginx
nginx是一个高性能、轻量级的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
-
相对于apache所具有的优点
- 高并发性能好
- 负载均衡以及反向代理能力好
- 系统内存和CPU的占用率低
- 可对后端服务进行健康检查
- 支持PHP fcgi和fast fcgi
- 可以作为缓存服务器,邮件代理服务器
- 配置简单
-
关于nginx的模块(按照功能来分)
基础模块,看这官方文档。
- handles(处理器模块)
此类模块直接处理请求,并进行输出内容和修改handers信息等操作,此类模板一般只能有一个。
- filters(过滤器模块)
此类模块主要对其他处理器模块输出的内容进行修改操作。
- proxies(代理器模块)
此类模块是upstream之类的模块,这类模块主要是与后端一些服务进行交互,实现服务代理和负载均衡。
- 关于epoll模型(默认在linux内核版本2.6以上支持)
nginx的高并发得益于它的epoll模型,与传统的服务器架构不同的是,epoll是Linux后面才有的异步非阻塞,而apache是select模型(传统的I/O多路复用)。
关于两者的区别:apache的select特点是在选择句柄的时候需要遍历所有的句柄,效率很低;而nginx的epoll则是当句柄上有事件响应的时候就把它立即选出来,不需要遍历全部。
- 关于php-fpm
- 先说说cgi、fast-cgi
cgi协议是为了解决不同的语言解释器,像:php,python与webserver的通信;而fast-cgi则是cgi的改良版本,为了解决:解释器与webserver通信的时候,当webserver每收到一个请求就fork一个cgi进程,请求结束后在kill进程,当请求增多的时候,这样的事也就增多从而带来的资源浪费的问题。fast-cgi不会杀死这个进程,一直保留,使它可以处理多个请求。
- php-fpm
也就是php-fastcgi process manager。它提供了进程管理的功能。它包含两个进程,一个是master负责监听端口,接收来自web server的请求,另一个是worker(可以有多个),每个进程内部都嵌入了一个PHP解释器,是PHP代码真正的执行器。
对于apache而言,php是作为它的一个模块进行工作、处理;但是对于nginx,php-fpm与nginx则是相互独立的。