最近有人问我,Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。而且Nginx在负载上面远超Apache,为什么目前大多数的互联网公司都是使用Nginx+Apache+Tomcat这种架构模式,而不是直接Nginx+Tomcat,这样不是架构更加方便,而且性能更佳优异嘛。
我觉得这个问题非常有意思,也去问了一些人,有人说应该是以前公司使用Apache+php习惯了,然后nginx出现以后不敢轻易更改架构,所以在前面加一层Nginx反向代理。其实
提出这种问题的人,一定是没有自己搭建过高负载站点,也根本没有仔细了解过Nginx和Apache之间究竟有什么区别。
Web服务器介绍
NginxNginx ("engine x") 是一个高性能的HTTP和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 服务器。其特点是占有内存少,并发能力强。
Nginx为什么能够载同样的硬件下做到更高的负载,就在于其成熟的事件驱动框架,和事件调度机制,异步的方式能够更好更快速的处理请求,这点和Node.JS倒是很相近。
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
原因
请注意上面Apache的解释,它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。这就是为什么要有Apache的原因,由于Web服务器本身是没有动态语言处理能力的,所以Nginx要使用PHP、JAVA这种动态语言的时候,就必须要有应用程序服务器来处理,而Apache本身能过直接加载php.so动态库,能够自行处理php语言的解释和运行,或者说整合Tomcat,而nginx就只能遵循FASTCGI协议,将所有的用户请求转发给后端cgi服务器,所以在同样的请求下,性能无法和Apache媲美。所以就有了这样一个神奇的架构,Apache组成后端集群,Nginx作为反向代理的前端,即使一个集群挂掉了,照样能过平衡负载。而且在现代的架构设计里面,静态文件等资源都是被放到CDN的,也就是说,和业务集群毫无关系,又或者说直接就是存在一个Nginx集群来搞定这一切,这样就能够最大限度的在速度、并发负载、性能上面找到一个平衡点。
标签云
- 东方财富
- saucxs博客园
- weekly周报
- loveBook
- 前端博客
- 技术交流学习社区
- saucxs
- segmentfault
- saucxs的博客
- haorooms
- luckyscript
- 东方财富期货
- 峰云就她了
- binlive
- songEagle
- 且听风吟
- (TX)Heying Ye
- CG Online Judge
- Chris's Blog
- vueRouter
- 龙恩0707
- 鑫空间,鑫生活
- 木易杨
- MDN-js
- Cherry's Blog
- InterviewMap
- 安安哥的小戏台
- xiaojun1994-cat
- JavaScript-Garden
- junruchen-daily
- 秋天爱美丽
- web-summary-daily
- w3cplus-tb
- 潜行者m
- 于江水
- KieSun-git
- cnodejs
- aerminBlog
- fex_bd
- gwuhaolin-git
- Deboy's Blog
- react-china
- react.docschina
- Vuejs社区
- vuejsDoc
- cdnSocketIo
- shuaihuaCC
- colorize
- stazhu
- 前端学习
- IBM Dev社区
- linux运维笔记
- webpackDoc
- sayskyGithub
- 前端里
- 996.ICU
- electronjs
- CS-Notes
- mqyqingfengBlog
- beego官方
- 编码规范
- 阮一峰个人网站
- sessionstack
- damonareGoUp
- 咀嚼之味
- fe-interview
- xd-tayde/blog
- css-tricks
- ghmagical个人中心
- markyunp6
- hellogithub
- 霜序廿
- rin部落
- 建站素材
- 前端资源网
- CSS开发手册
- web技术交流
- 程新松个人网站
- wangEditor
- 小松博客
- 交流学习社区