Apache 与 NGINX 对比

Apache 与 NGINX 各有什么优缺点

Apache 同步阻塞式的工作方式,NGINX 异步非阻塞式的工作方式。

  • Apache 的优点
  1. Apache的rewrite功能比nginx的要强大
  2. 找到模块模块非常多,基本想要的功能都能对较少存在时间较长,文献较全,bug也少
  3. 动静态解析都超稳定
  • Apache 的缺点
  1. 由于工作模式是同步阻塞型,导致资源消耗较高,并发能力较差
  • NGINX 的优点
  1. 轻量级服务,比Apache占用更少的内存及资源并发能力强,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx能保持低资源低消耗高性能
  2. 高度模块化的设计,编写模块相对简单
  3. 社区活跃,各种高性能模块产出迅速
  • NGINX 的缺点:
  1. 动态处理上需要使用fastcgi连接PHP的FPM服务,相比Apache不占优势

总结:

Nginx 适合做静态处理,简单,效率高Apache 适合做动态处理,稳定,功能强并发较高的情况下优先选择Nginx,并发要求不高的情况下两者都可以,规模稍大的可以使用Nginx作为反向代理,然后将动态请求负载均衡到后端Apache上。

什么是同步与异步

同步:小明收到快递将送达的短信,在楼下一直等到快递送达。

异步:小明收到快递将送达的短信,小明不会下楼去取, 而是快递小哥到楼下后,打电话通知小明,然后小明下楼取快递

什么是阻塞与非阻塞

阻塞:小明收到快递即将送达的信息后,什么事都不做,一直专门等快递。
非阻塞:小明收到快递即将送达的等快递的时候,还一边敲代码信息后,一边听歌,等着快递送达的消息。

Nginx以异步非阻塞方式工作

客户端发送request,服务器分配work进程来处理能立即处理完的,处理后work进程释放资源,进行下一个request的处理。
不能立即处理完的work进程注册返回事件,然后接着去处理其他request。
当之前的request结果返回后,触发返回事件,由空闲work进程接着处理通过这种快速处理,快速释放请求的方式,达到同样的配置可以处理更大并发量的目的。