Apache和Nginx的比较以及实用场景分析 (2019-09-02 21:54)
Apache相比于Nginx的优点
1. 自带可以扩展的模块很多,很全面,想要的基本都能找到。
2. rewrite(伪静态[1])功能比Nginx强大。
3. 比Nginx稳定多,坑少。
Nginx相比于Apache的优点
1. 比Apache轻量很多,配置简单、易用,占用的服务器资源少。
2. 静态资源的分发能力强与Apache。
3. 抗高并发能力高于Apache很多。Nginx 处理请求是异步非阻塞的,而Apache 则是同步阻塞型的[2]
[1] 伪静态:伪静态是相对真实静态来讲的,一般为了增强搜索引擎的友好面,都将文章内容生成静态页面,在服务器内部通过重写Url实现。例如csdn.com/123.php?arg0=1&arg1=2,搜索引擎比较排斥这种带问号的动态网页,因为参数可以随便加,而返回内容却不变,所以会对这种网页降权。这样可以将链接调整为csdn.com/123-1-2.php这种,搜索引擎便会以为是静态网页进行抓取,实际上在Web服务器内部仍然是根据参数去取得动态数据。这种处理对网站SEO有好处,不过过多的伪静态也会消耗很大的CPU资源。对于Apache来说,网上也可以找到不少的配置伪静态的教程。
[2] 阻塞和异步:阻塞/非阻塞,当发起的线程在进行I/O操作时获取数据,需要先等到数据返回才继续执行命令就是阻塞的模式,这种会使得CPU不能得到充分利用,而不等待数据的返回,继续往下执行其他命令就是非阻塞的的模式。对于非阻塞模式,单线程一般采用不断去轮询来获取数据是否返回,多线程中分配一个线程专门等待数据返回。 同步/异步,当线程进行I/O操作的时候,要是主动关心返回数据结果是同步模式,反之,被动等待事件通知是异步模式。一般情况下,最好的方案就是异步非阻塞,这便是Nginx能够抗高并发的原因。
来自微信公众号:编程社
程序员日常进阶宝典,欢迎关注!