apache和nginx的介绍

1、Apache

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。

Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“apatchyserver”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3Consortium、FinancialTimes等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。

apache的特性:

1)几乎可以运行在所有的计算机平台上.

2)支持最新的http/1.1协议

3)简单而且强有力的基于文件的配置(httpd.conf).

4)支持通用网关接口(cgi)

5)支持虚拟主机.

6)支持http认证.

7)集成perl.

8)集成的代理服务器

9)可以通过web浏览器监视服务器的状态,可以自定义日志.

10)支持服务器端包含命令(ssi).

11)支持安全socket层(ssl).

12)具有用户会话过程的跟踪能力.

13)支持fastcgi

14)支持javaservlets

2、nginx

nginx是俄罗斯人编写的十分轻量级的HTTP服务器,它的发音为“engineX”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器.Nginx是由俄罗斯人IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发.

Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。

nginx做为HTTP服务器,有以下几项基本特性:

处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.

无缓存的反向代理加速,简单的负载均衡和容错.

FastCGI,简单的负载均衡和容错.

Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。

Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就稳定性而言,nginx比lighthttpd更胜一筹。

Nginx支持热部署。它的启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。

apache和nginx对比

Nginx相对于Apache:

1、高并发响应性能非常好。(单台万级并发连接30000-50000/s(简单静态页))

2、反向代理性能非常好。(可用于负载均衡)

3、内存和cpu占用率低。(为Apache的1/5-1/10)

4、功能较Apache少(常用功能均有)

5、对php可使用cgi方式和fastcgi方式,没有模块编译加载方式。

有人通过两者的性能测试比较(点击查看apache和nginx性能比较),得出结论:nginx作单纯的WEB服务器,也就是放静态内容,性能上比Apache要好,特别可承受压力、带宽及资源消耗上都要优于Apache。

apache和nginx使用区别

1、伪静态写法与区别

apache伪静态写法

rewriteengineon

rewriterule/rss/(.*).xml$/rss/rss.php?a=$1

rewriterule/xml/(.*).xml$/xml/xml.php?a=$1

nginx伪静态写法

rewrite^/rss/(.*).xml$/rss/rss.php?a=$1last;

rewrite^/xml/(.*).xml$/xml/xml.php?a=$1last;

nginx伪静态写法时以^开头并且结束处加个last

2、二级域名Rewrite重写规则区别

1)在Apache下用Rewrite绑定二级域名,要先在网站根目录建立一个“.htaccess”文件,

“.htaccess”文件的内容:

#开户重写规则

RewriteEngineon

#让test.web126.com访问www下的test目录

RewriteCond%{HTTP_HOST}^test.web126.com$

RewriteCond%{REQUEST_URI}!^/www/test/

RewriteCond%{REQUEST_FILENAME}!-f

RewriteCond%{REQUEST_FILENAME}!-d

RewriteRule^(.*)$/www/test/$1

RewriteCond%{HTTP_HOST}^test.web126.com$

RewriteRule^(/)?$www/test/[L]

2)在nginx下绑定二级域名,要在“XXX.conf”设置文件中写规则

server

{

listen80;

server_nametest.web126.com;

indexindex.htmlindex.htmindex.php;

root/home/www/test;

includelocation.conf;

error_page404/404.html;

}

3、获取用户IP

使用apache服务器时,程序可以使用$_SEVER['ROMOTE_ADDR']获取用户IP

使用nginx服务器时,要使用$_SERVER['HTTP_X_REAL_IP']和$_SERVER['HTTP_X_FORWARDED_FOR']中获取用户的ip地址。原因可以参考我的另一篇博文使用nginx服务器时,php获取用户ip的方法

相关推荐