` nginx(一) | 听云轩

nginx(一)

关于nginx

nginx是一个高性能、轻量级的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。

  • 相对于apache所具有的优点

    1. 高并发性能好
    2. 负载均衡以及反向代理能力好
    3. 系统内存和CPU的占用率低
    4. 可对后端服务进行健康检查
    5. 支持PHP fcgi和fast fcgi
    6. 可以作为缓存服务器,邮件代理服务器
    7. 配置简单
  • 关于nginx的模块(按照功能来分)

基础模块,看这官方文档

  1. handles(处理器模块)

此类模块直接处理请求,并进行输出内容和修改handers信息等操作,此类模板一般只能有一个。

  1. filters(过滤器模块)

此类模块主要对其他处理器模块输出的内容进行修改操作。

  1. proxies(代理器模块)

此类模块是upstream之类的模块,这类模块主要是与后端一些服务进行交互,实现服务代理和负载均衡。

  • 关于epoll模型(默认在linux内核版本2.6以上支持)

nginx的高并发得益于它的epoll模型,与传统的服务器架构不同的是,epoll是Linux后面才有的异步非阻塞,而apache是select模型(传统的I/O多路复用)。

关于两者的区别:apache的select特点是在选择句柄的时候需要遍历所有的句柄,效率很低;而nginx的epoll则是当句柄上有事件响应的时候就把它立即选出来,不需要遍历全部。

  • 关于php-fpm
  1. 先说说cgi、fast-cgi

cgi协议是为了解决不同的语言解释器,像:php,python与webserver的通信;而fast-cgi则是cgi的改良版本,为了解决:解释器与webserver通信的时候,当webserver每收到一个请求就fork一个cgi进程,请求结束后在kill进程,当请求增多的时候,这样的事也就增多从而带来的资源浪费的问题。fast-cgi不会杀死这个进程,一直保留,使它可以处理多个请求。

  1. php-fpm

也就是php-fastcgi process manager。它提供了进程管理的功能。它包含两个进程,一个是master负责监听端口,接收来自web server的请求,另一个是worker(可以有多个),每个进程内部都嵌入了一个PHP解释器,是PHP代码真正的执行器。

对于apache而言,php是作为它的一个模块进行工作、处理;但是对于nginx,php-fpm与nginx则是相互独立的。

------ 本文结束 ------
您的支持将鼓励我继续创作