nginx和apache的一些比较

1.两者所用的驱动模式不同。

nginx使用的是epoll的非阻塞模式事件驱动。

apache使用的是select的阻塞模式事件驱动。

2.fastcgi和cgi的区别

当用户请求web服务的时候,web会根据不同的需求将请求发送给不同个cgi来处理。

cgi模式,就是每次有请求的时候都fork一个新的进程来处理这个请求,处理完成后再关闭这个进程。

fastcgi模式,就是在服务器启动的时候根据配置文件建立几个cgi接口进程长驻在内存当中,当有请求连接的时候,cgi被激活来处理请求连接,处理完毕后cgi进程也不会关闭,会再次等待下次的请求连接。

因为进程的创建和关闭需要占用很大的内存和cpu资源,所以,相比较而言,处理多请求的情况下fastcgi模式的优点会不言而喻。

3.两者的支持模块

Apache支持的模块很多,而且也比较稳定。而nginx由于出现的比较晚,所以在这方面可能比不上Apache。

nginx本身就是一个反向代理服务器,而且支持7层负载均衡。

Apache的rewrit功能比nginx强大许多。

nginx是多线程的,而Apache是多进程的。

nginx处理动态页面很鸡肋,一般只用与处理静态页面和反向代理。

Apache由于支持的模块比较多,可以支持比较多的动态页面。而且性能比较稳定。

如果需要性能,就使用nbinx;如果需要稳定,就使用Apache。

以下复制于网络

不断有人跟我说Nginx比Apache好、比Apache快之类。Nginx更主要是作为反向代理,而非WEB服务器使用。我翻译过一本关于反向代理的技术书籍,同时精通Apache API开发,对Nginx和Apache的工作原理都略有了解,粗谈一下看法。
    不管是Nginx还是Squid这种反向代理,其网络模式都是事件驱动。事件驱动其实是很老的技术,早期的select、poll都是如此。后来基于内核通知的更高级事件机制出现,如libevent里的epoll,使事件驱动性能得以提高。事件驱动的本质还是IO事件,应用程序在多个IO句柄间快速切换,实现所谓的异步IO。事件驱动服务器,最适合做的就是这种IO密集型工作,如反向代理,它在客户端与WEB服务器之间起一个数据中转作用,纯粹是IO操作,自身并不涉及到复杂计算。反向代理用事件驱动来做,显然更好,一个工作进程就可以run了,没有进程、线程管理的开销,CPU、内存消耗都小。所以Nginx、Squid都是这样做的。当然,Nginx也可以是多进程 + 事件驱动的模式,几个进程跑libevent,不需要Apache那样动辄数百的进程数。Nginx处理静态文件效果也很好,那是因为静态文件本身也是磁盘IO操作,处理过程一样。至于说多少万的并发连接,这个毫无意义。我随手写个网络程序都能处理几万的并发,但如果大部分客户端阻塞在那里,就没什么价值。
    再看看Apache或者Resin这类应用服务器,之所以称他们为应用服务器,是因为他们真的要跑具体的业务应用,如科学计算、图形图像、数据库读写等。它们很可能是CPU密集型的服务,事件驱动并不合适。例如一个计算耗时2秒,那么这2秒就是完全阻塞的,什么event都没用。想想Mysql如果改成事件驱动会怎么样,一个大型的join或sort就会阻塞住所有客户端。这个时候多进程或线程就体现出优势,每个进程各干各的事,互不阻塞和干扰。当然,现代CPU越来越快,单个计算阻塞的时间可能很小,但只要有阻塞,事件编程就毫无优势。所以进程、线程这类技术,并不会消失,而是与事件机制相辅相成,长期存在。
    总结之,事件驱动适合于IO密集型服务,多进程或线程适合于CPU密集型服务,它们各有各的优势,并不存在谁取代谁的倾向。再盲目的言之Nginx可以取代Apache的,该好好反思了。
    来源 风河博客 http://www.nsbeta.info/archives/136

以下为来自hostloc论坛会员“Kokgog”的评论:

这篇文章论据大部分是对的,论点和结论在卖萌
    webserver本身就是I/O密集型操作,CPU密集型的东西谁会扔给webserver做? 发展到现在, webserver的定位基本已经等同于一个实时性高的同步队列了,
    unix本身的哲学就是分拆任务,放到webserver上,就是转发数据给fcgi服务器, fcgi端处理数据再call数据库服务器,  照这篇文章的论点和结论,还用什么php和数据库, 直接apache层写C模块处理请求和文本存储算了
    很多大站或者企业站坚守apache的唯一原因是系统重,不方便迁移,都还在用2.4内核,用nginx/lighttpd这些异步webserver发挥不出多大作用,并不是因为apache有多先进, apache是伟大的,但是它的理念和实现放到现在就是滞后的。
    所谓的lnamp里面的apache做的任务,也就等同于fcgi server,并不代表它拿来做webserver

时间: 2024-10-25 04:19:17

nginx和apache的一些比较的相关文章

Nginx对(apache+foreman+puppet)负载均衡

Nginx对(apache+foreman+puppet)负载均衡 一.前提准备 试验环境: OS:Centos 6.5_x86 puppet-server-3.8.3 foreman-1.9.2 foreman-proxy-1.9.2 httpd-2.2.15 服务器已经搭建好了apache+foreman+puppet详情请参考: http://4709096.blog.51cto.com/4699096/1710697 二.修改pupeptmaster相关配置 2.1修改puppetmas

nginx、Apache、IIS中413 Request Entity Too Large问题解决方法

分享下nginx.Apache.IIS三种服务器解决413 Request Entity Too Large问题的方法. 一.nginx服务器 nginx出现这个问题的原因是请求实体太长了.一般出现种情况是Post请求时Body内容Post的数据太大了,如上传大文件过大.POST数据比较多. 处理方法在nginx.conf增加 client_max_body_size的相关设置, 这个值默认是1m,可以增加到8m以增加提高文件大小限制:当然可以设置的更大点.# 在http,server或者loc

Nginx和Apache各自的优缺点

nginx 相对 apache 的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 高度模块化的设计,编写模块相对简单 社区活跃,各种高性能模块出品迅速啊 apache 相对nginx 的优点: rewrite ,比nginx 的rewrite 强大 模块超多,基本想到的都可以找到 少bug ,nginx 的bug 相对较多 超稳定 优缺点: 1.作为

nginx and apache

Apache与Nginx的优缺点比较 1.nginx相对于apache的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 ,高度模块化的设计,编写模块相对简单,社区活跃,各种高性能模块出品迅速啊 ! apache 相对于nginx 的优点: rewrite ,比nginx 的rewrite 强大 ,模块超多,基本想到的都可以找到 .少bug ,ngin

nginx和apache日志记录用户真实ip:X-Real-IP

如果结构里有个反向代理,那后端机器的日志记录的就会是代理的ip,真实的ip看不到了,后端代码可以通过在header里设置真实ip来解决,nginx加入下面一段即可: proxy_set_header X-Real-IP $remote_addr; 后端通过X-REAL-IP或者HTTP_X_REAL_IP变量获取. 日志记录的话,nginx可以定义$http_x_real_ip变量,例如:    log_format main '$http_x_real_ip - $remote_user ' 

Nginx与Apache动静分离

. Nginx与Apache动静分离,布布扣,bubuko.com

Nginx+LAT(apache+tomcat)的实现和使用memcached保存tomcat的session会话

Nginx+LAT(Apache+tomcat)的实现和Apache反向代理和负载均衡tomcat的不同方式以及使用memcached保存tomcat的session会话 一.Nginx+LAT(Apache+tomcat)的环境结构; 1.Nginx +Apache实现负载均衡用户请求至tomcat,其中Nginx是负载均衡调度器,Apache和tomcat在同一台机器上,Apache将关于JSP的请求发送至tomcat. 2.实验结构图: 3.环境介绍,在两台CentOS7上都安装Tomca

linux中查看nginx、apache、php、mysql配置文件路径的方法

转自:http://www.phper163.com/archives/368 如何在linux中查看nginx.apache.php.mysql配置文件路径了,如果你接收一个别人配置过的环境,但没留下相关文档.这时该怎么判断找到正确的加载文件路径了.可以通过以下来判断1.判断apache首先执行命令找到httpd路径ps aux | grep httpd如httpd路径为 /usr/local/apache/bin/httpd然后执行以下命令/usr/local/apache/bin/http

【nginx】nginx与apache的优缺点比较

参考: http://zyan.cc/nginx_php_v6/ nginx相对于apache的优点: 1.轻量级,同样的web 服务,比apache服务器占用更少的内存及资源 2.抗并发,nginx在处理请求是异步非阻塞的(epoll),而apache 则是阻塞型的(select),在高并发下nginx 能保持低资源低消耗高性能 3.高度模块化的设计,编写模块相对简单 4.apache是同步多进程模型,一个连接对应一个进程:nginx是异步的,多个连接(万级别)可以对应一个进程 apache

HAProxy Nginx LVS Apache总结篇

今天也许是最后一次探讨关于HAProxy Nginx LVS Apache的文章,之后将不再赘述,博主之后将要把重心放在Java和Python上,大家如果有什么疑问可以通过博客首页QQ联系.或者留言. 一.今天花点时间总结分享一下HAProxy.Nginx.LVS.Apache: 比较 HAProxy Nginx LVS Apache 简介 高可用.负载均衡且基于TCP和HTTP应用的代理,支持高并发,多集群反代. 高性能http和反向代理服务器.邮件代理服务器,支持高并发,轻量级Web,低系统