apache的优缺点和nginx的区别

中国领先的IT技术网站
51CTO旗下网站
为什么我们使用Nginx而不是Apache?
Apache是非常强大的Web服务器,模块化结构,也是Web服务端的鼻祖。世界上大多数网站仍运行着Apache系统。但是,Apache并不是完美的,并且不再适合大规模系统。为什么?因为他的进程模式虽然简单而灵活,但并不适合大规模尤其是当要处理像PHP这种需要占用大量内存应用程序代码时。
作者:Steve Mushero来源:| 10:14
我们大多数的客户在他们的服务器上使用Apache作为Web服务器,尤其是部署在一个基于PHP系统的前端并且使用mod-PHP。鉴于扩张性和性能方面的原因,我们通常会建议他们改用Nginx和FPM。
Apache是非常强大的Web服务器,模块化结构,也是Web服务端的鼻祖。除了捆绑一些其他的工具外,Apache已经成为了世上最广泛部署的开源系统,直到最近,世界上大多数网站仍运行着Apache系统。
但是,Apache并不是完美的,并且不再适合大规模系统。为什么?因为他的进程模式虽然简单而灵活,但并不适合大规模尤其是当要处理像PHP这种需要占用大量内存应用程序代码时。
一个典型的网络应用服务器由两部分组成。客户端连接部分负责用户浏览器与HTTP连接,保持长时间的TCP/IP协议,通常是1到2分钟。对于一个大型的系统,服务器可能要同时承担和处理数以万计的并发连接。
这直接与Apache只有500条进程即500个HTTP连接的处理能力上限相冲突。而现今的浏览器让这个问题更加严重, 因为现在的浏览器平均每个主机会打开六个网站链接(几年前是两个网站链接)。所以当超过100个用户同时访问时,Apache就已经满负荷了。
第二部分是应用程序处理部分,这部分承担了代码运算。在大多数系统中,这部分工作是最消耗RAM和CPU资源的,因此进程数量必须被严格限制,通常是大约每 1GB的内存10个进程,或者每个CPU核心两个进程。因此一台4GB RAM、16内核的服务器最多只能运行32个应用程序进程。
但是,问题的关键是,Apache直接连接前端客户端通讯组件与后端应用程序进程组件。如此一来,前端部分往往保持长时间的连接,常常达到几分钟,这导致后端部分将持续消耗内存和CPU资源。目前还没有直接的方法能够在大型系统中找到前后端服务的平衡,因此他们必须被分离开来。
目前有两个主要的解决方法。第一个方法,也是现有系统上最容易的方法,就是在Apache前端安装负载均衡服务器或者Nginx来处理客户端连接部分。负载均衡服务器,像 HAProxy或者Nginx能轻松处理成千上万条并发的连接,并使Apache能够真正的仅作为后端应用程序工作,来处理32个或是更多的进程。
第二种方案,也是最通用的办法就是用Nginx替换Apache,同时使用PHP-PFM作为应用服务器。就像之前所提到的,这将分割前端客户端通信部分和后端应用程序部分。Nginx处理HTTP通讯协议,同时FPM处理后端应用程序部分,和那32个进程进行交互。
然而这几种方法仍然还存在一些问题,主要是如何加载服务器的RPC调用,以及如何释放已经完成的RPC调用。 这两个问题都会在后继的博客中加以详解。
另外,只使用Nginx的解决方法会给那些严重依赖于Apache功能的应用程序带来问题,尤其是特别依赖rewrite rules, .htaccess, 或者mod_security等一些可选组件的应用程序。在这种情况下,在Apache前端增加安装Nginx是最好的方法。
通常来说,所有新的系统都应该使用Nginx和PHP-FPM来部署。这能提供高性能增长特性,并且是平衡用户和内存,CPU资源的最佳选择。已存在的系统可以在前端使用Nginx或者HAProxy以达到同样的效果,以便在当今现代网络环境中为用户提供更优质的服务。【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条外电头条外电
24H热文一周话题本月最赞
讲师:0人学习过
讲师:0人学习过
讲师:11人学习过
精选博文论坛热帖下载排行
本书是数据库系统方面的经典教材之一。国际上许多著名大学包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学、印度理工学...
订阅51CTO邮刊您当前的位置:
> 正文内容 我们到底是选择Nginx还是 Apache
网站:511遇见
微信: zcp528
公众号:zhuchuanpeng666
1 推荐栏目
微信号: zcp528
欢迎扫描二维码加我好友,沟通就是力量!
微信订阅公众号: zhuchuanpeng666
订阅公众号好能及时的给你传送一些交流一些心得。
加为QQ好友,及时交流沟通心得,经验。
入群有更多的朋友一起交流沟通前端及后端建站技术。nginx与apache的优缺点 - 博客频道 - CSDN.NET
人生不易,全靠演技;把角色演成自己,把自己演到失忆!
分类:nginxapache
1.nginx相对于apache的优点:
轻量级,同样起web 服务,比apache占用更少的内存及资源
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,
在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
社区活跃,各种高性能模块出品迅速啊
apache 相对于nginx 的优点:
rewrite ,比nginx 的rewrite 强大
模块超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多
3、Nginx 配置简洁, Apache 复杂
Nginx 静态处理性能比 Apache 高 3倍以上
Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用
Apache 的组件比 Nginx 多
现在 Nginx 才是 Web 服务器的首选
4、最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程
5、nginx处理静态文件好,耗费内存少.但无疑apache仍然是目前的主流,有很多丰富的特性.所以还需要搭配着来.当然如果能确定nginx就适合需求,那么使用nginx会是更经济的方式.
apache有先天不支持多核心處理負載雞肋的缺點,建議使用nginx做前端,後端用apache。大型網站建議用nginx自代的集群功能
6、 从个人过往的使用情况来看,nginx的负载能力比apache高很多。最新的服务器也改用nginx了。而且nginx改完配置能-t测试一下配置有没 有问题,apache重启的时候发现配置出错了,会很崩溃,改的时候都会非常小心翼翼现在看有好多集群站,前端nginx抗并发,后端apache集群, 配合的也不错。
ldTrueLove
排名:千里之外
(1)(1)(1)(33)(2)(3)(8)(4)(2)(2)(1)(4)(0)(9)(1)Nginx与Apache的Rewrite规则的区别
&1. Nginx Rewrite规则相关指令&
Nginx Rewrite规则相关指令有if、rewrite、set、return、break等,其中rewrite是最关键的指令。一个简单的Nginx Rewrite规则语法如下:
rewrite ^/b/(.*)\.html /play.php?video=$1
如果加上if语句,示例如下:& if (!-f $request_filename)
{ rewrite ^/img/(.*)$ /site/$host/images/$1&&&&& }
2. Nginx与Apache的Rewrite规则实例对比
&&& 简单的Nginx和Apache 重写规则区别不大,基本上能够完全兼容。
&Apache Rewrite 规则:&
RewriteRule ^/(mianshi|xianjing)/$ /zl/index.php?name=$1 [L]
RewriteRule ^/ceshi/$ /zl/ceshi.php [L]
RewriteRule ^/(mianshi)_([a-zA-Z]+)/$ /zl/index.php?name=$1_$2 [L] RewriteRule ^/pingce([0-9]*)/$ /zl/pingce.php?id=$1 [L]
Nginx Rewrite 规则:&
rewrite ^/(mianshi|xianjing)/$ /zl/index.php?name=$1
rewrite ^/ceshi/$ /zl/ceshi.
rewrite ^/(mianshi)_([a-zA-Z]+)/$ /zl/index.php?name=$1_$2
rewrite ^/pingce([0-9]*)/$ /zl/pingce.php?id=$1
&&& 不难发现Apache的Rewrite规则改为Nginx的Rewrite规则挺简单的,如果改完规则,使用"nginx -t"命令检查发现nginx.conf配置文件有语法错误,那么可以尝试给条件加上引号。例如一下的Nginx Rewrite规则会报语法错误:&
rewrite& ^/([0-9]{5}).html$ /x.jsp?id=$1&加上引号就正确了:&&&
rewrite& “^/([0-9]{5}).html$” /x.jsp?id=$1&
Apache与Nginx的Rewrite规则在URL跳转时有细微的区别:&
Apache Rewrite 规则:& &
RewriteRule& ^/html/tagindex/([a-zA-Z]+)/.*$ /$1/ [R=301,L] Nginx Rewrite 规则:
rewrite& ^/html/tagindex/([a-zA-Z]+)/.*$ http://$host/$1/&
以上示例中,我们注意到,Nginx Rewrite 规则的置换串中增加了“http://$host”,这是在Nginx中要求的。& &&&& 另外,Apache与Nginx的Rewrite规则在变量名称方面也有区别,例如:& Apache Rewrite 规则:&
RewriteRule ^/user/login/$ /user/login.php?login=1&forward=http://%{HTTP_HOST} &[L] &&&& Nginx Rewrite 规则:&
rewrite &^/user/login/$ /user/login.php?login=1&forward=http://$host& Apache与Nginx Rewrite 规则的一些功能相同或类似的指令、标记对应关系:& Apache的RewriteCond指令对应Nginx的if指令;& Apache的RewriteRule指令对应Nginx的rewrite指令;& Apache的[R]标记对应Nginx的redirect标记;& Apache的[P]标记对应Nginx的last标记;& Apache的[R,L]标记对应Nginx的redirect标记;& Apache的[P,L]标记对应Nginx的last标记;& Apache的[PT,L]标记对应Nginx的last标记;&
允许指定的域名访问本站,其他域名一律跳转到:& &
Apache Rewrite 规则:&
RewriteCond %{HTTP_HOST}&&& ^(.*?)\.domain\.com$
RewriteCond %{HTTP_HOST}&&& !^qita\.domain\.com$ RewriteCond %{DOCUMENT_ROOT}/market/%1/index.htm -f
RewriteRule ^/wu/$ /market/%1/index.htm [L] &&&& Nginx的if指令不支持嵌套,也不支持AND、OR等多条件匹配,相比于Apache的RewriteCond,显得麻烦一些,但是,我们可以通过下一页的Nginx配置写法来实现这个示例:& &&& Nginx Rewrite 规则:& &
if ($host ~* ^(.*?)\.domain\.com$)&&&&
set $var_wupin_city $1;&&&&
set $var_wupin *;&&&&
if ($host ~* ^qita\.domain\.com$)
set $var_wupin *;&&&&
if (!-f $document_root/market/$var_wupin_city/index.htm)&&&&
set $var_wupin *;&&&&
if($var_wupin ~ *)&&&&
rewrite ^/wu/$ /market/$var_wupin_city/index.&&&&
备注学习:
rewrite ^/serach/(.*).html& /search.action?keywords=$1&
访问/search/mp3.html,浏览器url重定向为/search.action?keywords=mp3&
阅读(5190)
&re: Nginx与Apache的Rewrite规则的区别
请问一下,nginx 兼容的 rewrite 指令实现伪静态怎么写?
博客在子目录/blog
服务器环境:nginx/alpha
&&&&&&
留言簿(21)
随笔分类(265)
随笔档案(242)
关注的Blog
积分与排名想搭个WEB服务器,Apache和Nginx哪个好用?|电脑软硬派 - 数码之家
查看完整版本: [--
赞助商链接
最近在学习搭建网站来安装论坛玩,挺有意思的,PHP和MYSQL基本上没有其他选择了,但是WEB软件发现有很多款,有熟悉的会员推荐一个比较好用的。
赞助商链接
linux环境的话 PHP+MYSQL+APACHE是比较常见的。。
赞助商链接
Windows操作系统的话,直接用iis,综合性能不会比Apache差Linux操作系统的话,建议用Nginx,现在最火的WEB服务器
根据操作系统类型来定义需要那种软件
初级的话 还是windows 安apache 吧 网上有现成的套件&&下载后直接安装 就可以了。很简单。
win2008以上系统,直接用iis,装上fastcgi执行php,效率也相当不错
看服务器硬件配置了!好的用LAMP(LINUX+APACHE+MYSQL+PHP)差的用LNMP(LINUX+NGINX+MYSQL+PHP)
看服务器硬件配置和操作系统服务器配置不高的话,建议还是*unix环境下用APACHE,服务器配置高又跑windows系统的话,可以试下wamp(windows下的。APACHE+MYSQL+PHP),其实如果负载不大的话怎么配都可以。
如果是单机调试的话,搜索“phpstudy”,安装即用比较方便。
我的建议:linux + lighttpd +php&&+mysql占用资源低,反应快我就是这样弄的,用的是一个mini小主机安装的openwrt系统功耗3W,24小时开机我的网站:
:看服务器硬件配置了!好的用LAMP(LINUX+APACHE+MYSQL+PHP)差的用LNMP(LINUX+NGINX+MYSQL+PHP) ( 10:17) 严重同意的Nginx!!
:我的建议:linux + lighttpd +php  +mysql占用资源低,反应快我就是这样弄的,用的是一个mini小主机安装的openwrt系统功耗3W,24小时开机....... ( 11:02) 我用树莓派搭了一个&&用的Nginx&&但是域名很头痛啊!&& 有什么推荐不?
Ubuntu搭建LNMP简易教程 Linux下配置比较方便的服务器软件还有一个叫Cherokee的WebServer,主要配置界面是在网页下完成的我曾经用过一段时间,这个服务器软件的性能不错的[attachment=3359790]Ubuntu搭建LCMP简易教程
ATOM N330小主板,1G RAM + 7G SLC域名采用ddns + 一级域名alias方式,缺点是做不了MX记录,发邮件可能会被退信
:我的建议:linux + lighttpd +php&&+mysql占用资源低,反应快我就是这样弄的,用的是一个mini小主机安装的openwrt系统功耗3W,24小时开机.......&( 11:02)&你的域名怎么跳到带端口号的网站上去的?我猜是这样的:是不是您那里的ISP商封锁了80口,因而导致80口不能用,如需绑定域名,必然也带端口号。然后您没办法了,就想了个主意,把您申请到的域名,跟一个在线申请的免费空间绑上,然后在免费空间首页上传一段跳转代码调到您现在的IP+端口上来。========请问我猜对了吗?如果果然是这样的,那咱们可谓同道中人,我当初也被ISP商封80IN而伤透脑筋,最后也是如此实现的。。。
你的域名怎么跳到带端口号的网站上去的?我猜是这样的:是不是您那里的ISP商封锁了80口,因而导致80口不能用,如需绑定域名,必然也带端口号。然后您没办法了,就想了个主意,把您申请到的域名,跟一个在线申请的免费空间绑上,然后在免费空间首页上传一段跳转代码调到您现在的IP+端口上来。========请问我猜对了吗?如果果然是这样的,那咱们可谓同道中人,我当初也被ISP商封80IN而伤透脑筋,最后也是如此实现的。。。
:我的建议:linux + lighttpd +php&&+mysql占用资源低,反应快我就是这样弄的,用的是一个mini小主机安装的openwrt系统功耗3W,24小时开机.......&( 11:02)&你的域名怎么跳到带端口号的网站上去的?我猜是这样的:是不是您那里的ISр商封了80口,因而导致80口不能用,如需绑定域名,必然也带端口号。然后您没办法了,就想了个主意,把您申请到的域名,跟一个在线申请的免费空间绑上,然后在免费空间首页上传一段跳转代码,借助html代码,跳到您现在的IP+端口上来。----------------请问我猜对了吗?如果果然是这样的,那咱们可谓同道中人,我当初也被ISр商封80IN而伤透脑筋,最后也是如此实现的。。。
:你的域名怎么跳到带端口号的网站上去的?我猜是这样的:是不是您那里的ISр商封了80口,因而导致80口不能用,如需绑定域名,必然也带端口号。然后您没办法了,就想了个主意,把您申请到的域名,跟一个在线申请的免费空间绑上,然后在免费空间首页上传一段跳转代码,借助html代 ..( 19:18)嬀/color]你只猜对了一半,我这边ISP确实封了80等常用端口但是我的实现跳转的方法跟你那个不一样,我是用的DNS的显性域名跳转功能实现的还有我的空间就是用的小主机的CF卡,并不是用的免费的空间,因为免费的空间不稳定,也不安全。
:你只猜对了一半,我这边ISP确实封了80等常用端口但是我的实现跳转的方法跟你那个不一样,我是用的DNS的显性域名跳转功能实现的还有我的空间就是用的小主机的CF卡,并不是用的免费的空间,因为免费的空间不稳定,也不安全。 ( 20:45) 哦哦这样啊。路由建站?tomato固件外挂读卡器+CF卡?还是直接小主机+CF卡?最后一段“我的空间就是用的小主机的CF卡,并不是用的免费的空间”不能算我错。既然你不是用免费空间中转的,而是用的DNS域名跳转实现的,那自然就不需要网络免费空间了。我指的免费空间是指你如果用HTML代码跳转的话会用到的一个网络空间来存这个简短的跳转代码,而并非你存放真正的页面用的空间。
:哦哦这样啊。路由建站?tomato固件外挂读卡器+CF卡?还是直接小主机+CF卡?最后一段“我的空间就是用的小主机的CF卡,并不是用的免费的空间”不能算我错。既然你不是用免费空间中转的,而是用的DNS域名跳转实现的,那自然就不需要网络免费空间了。我指的免费空间是指你如果用HTM ..( 21:00)嬀/color]小主机建站的,CF卡做网站存储空间这样这个博客就完全受我控制了,维护起来方便不用看空间商的脸色
多并发建议NGINX 一般采用 Apache即可。。
:小主机建站的,CF卡做网站存储空间这样这个博客就完全受我控制了,维护起来方便不用看空间商的脸色 ( 21:24) 很好奇,你的IP不是动态的么?你怎么解决动态解析的?我自己的站,开始用的家里宽带搞的,动态解析用过好几种,没一个不会抽风的(不定时的某些地区就解析IP错误),最后把人搞的疲惫不堪,没辙才买了一个空间。
没用过L的系统,我的站最初是自己用电脑在家架的,用的WIN2003+MYSQL+PHP+IIS6.0,就个人经历而言,强烈不建议你也这么搞,IIS对于PHP问题很多,我折腾了将近2个多礼拜,才搭建好这个平台,期间问题不断,我差点放弃(用的PHP版本都是很底的,因为网上关于IIS下架PHP的教程几乎都是基于老版本的,新的PHP配置完全不一样,我安装了N遍新版本的PHP都没搞定)
以前就做过论坛,给不了什么建议,非专业感觉没多大区别,
这个要看用哪个操作系统的,
凑热闹来了,支持,支持
建议还是用linux吧
百度 wdcp 专业的傻瓜的
:我的建议:linux + lighttpd +php  +mysql占用资源低,反应快我就是这样弄的,用的是一个mini小主机安装的openwrt系统功耗3W,24小时开机....... ( 11:02) 3W,你在扯蛋吗。不可能的,ATOM也在10W左右
:你的域名怎么跳到带端口号的网站上去的?我猜是这样的:是不是您那里的ISр商封了80口,因而导致80口不能用,如需绑定域名,必然也带端口号。然后您没办法了,就想了个主意,把您申请到的域名,跟一个在线申请的免费空间绑上,然后在免费空间首页上传一段跳转代码,借助html代 .. ( 19:18) 直接加端口,很多网站都带91,8080之类的,无碍
apache 不错了,数据库的话,如果担心以后访问量大的问题建议用postgresql
:3W,你在扯蛋吗。不可能的,ATOM也在10W左右( 15:01)嬀/color]扯淡?你没见过低功耗的吧atom难道就是功耗最低的了?
研究的话先从apache开始研究吧,nginx是一款优秀的反向代理服务器,用fastcGi才能使用php的。
做的真好,羡慕
:扯淡?你没见过低功耗的吧atom难道就是功耗最低的了? ( 17:02) 好吧,算你狠,用BCM方案路由器,可是这货也不止3W啊!树莓派也不止!AR方案的路由器也不止!求知道
:3W,你在扯蛋吗。不可能的,ATOM也在10W左右( 15:01)嬀/color]扯淡?你没见过低功耗的吧atom难道就是功耗最低的了?
:扯淡?你没见过低功耗的吧atom难道就是功耗最低的了? ( 18:42) 如果你说pogoplug之类的,你觉得对于楼主来说有意思吗?你让楼主现在的水平部署openwrt还行,你让他安装LNMP不是为难他么?再说了装好LNMP又怎么样,WP能跑得动?
跑当然勉强可以跑的但是个人WEB服务器还是 建议跑emlog之类的轻博客吧当然,那些功耗20W左右的小主机跑WP是完全没问题的,但是功耗也上去了啊
好的用LAMP(LINUX+APACHE+MYSQL+PHP)差的用LNMP(LINUX+NGINX+MYSQL+PHP)
留名看介绍,涨姿势啊
这个我也不懂的
linux + lighttpd +php&&+mysql飄過,我的小站:
留个脚印!!备用!!!
看楼主的基础了个人建议apache,出了各种问题更容易找到答案用NGINX虽说快不少,但是大家自己建站负荷都是不高的,远不如修修方便更重要win+apache+mysql+php最简单了,现在还有快速向导,比路由器设置难不了多少另:自己开网站在天朝是非法的!楼上好多非法的
freebsd+lighttpd 还是不错的,数据库用sqlite3 ,喜欢用php就用php,我用的是perl
:linux + lighttpd +php  +mysql飄過,我的小站:http://itis.tk:88/ ( 22:58) tk超级大坑。。。。还是早日换掉
:tk超级大坑。。。。还是早日换掉 ( 17:50) 这不是舍不得花银子买域名嘛
:这不是舍不得花银子买域名嘛 ( 19:19) TK最大的问题,是360、金山、QQ管家等软件,都对访问TK网站有强制弹窗,提醒所访问的网站有病毒或违法虚假网站,所以除非自己玩玩的,否则那玩意还真不咋地,而且很多限制。买个COM域名也没几个钱,嫌国内备案麻烦,直接去GD买个得了,一次多买几年,用优惠码,平均下来也才四十多块
:这不是舍不得花银子买域名嘛 ( 19:19) godaddy,美国注册商,支持用支付宝购买,而且到处都是优惠码
查看完整版本: [--
Powered by
Gzip enabled

我要回帖

更多关于 nginx python服务器 的文章

 

随机推荐