apache、node.js、nginx、tomcat关系?
# apache、node.js、nginx、tomcat关系?
首先他们都能创建 Web 服务器,但是他们关注的点不一样。
Tomcat 最好跟 Java 配合,Apache 通常跟 PHP 配合,但也不排除能跟 Node.js 配合反向代理。跟 Node.js 关系最好的还算是 Nginx。
当然你在你的服务器上直勾勾挂个 Node.js 监听 80 端口对外也不是不可以。但是通常真正线上(个人玩具除外)的做法是,Node.js 监听本地的某个端口,然后前面挂个 Nginx 监听 80 端口反向代理到 Node.js 上。
至于为什么要这么做,比如你有 3 台服务器,每个服务器上启一个 Node.js 作为集群的一个节点,然后再在前面挡一层负载均衡,反向代理到集群的 3 台服务器上。所以实际上不仅仅是 Node.js,这是一种语言无关的做法。
# 首先,他们都能拿来做 Web 服务器。
# 服务器分为两类:
- web服务器
- 应用服务器
web服务器就是Apache,nginx一类,不具备解析动态语言(比如php文件和js文件)的能力,更关注整体架构和静态资源访问。
应用服务器是指tomcat,nodejs一类,本身可以提供web服务,监听本地某个端口,解析执行php,java,js代码,更关注业务逻辑。
提示
简单点理解,Apache = Nginx,相当于微软的IIS;tomcat=Apache+jsp解析器;Node.js只是JavaScript解析器,但可以自己写个js监听80端口解析HTTP协议,那就能等同于Apache和Nginx了,功能和性能那估计没得比。
nodejs起个服务可能要比Tomcat麻烦,但是nodejs比Tomcat还要轻量,nodejs啥也没有,活生生拿JavaScript起服务,快捷一点就是用一些框架,npm几个包,写几行代码就起个服务了,那些个node框架,底层还不是使用的JavaScript。
如果只用APACHE 做服务器,还需要向后端数据发送吗,那后端的应用在哪跑呢?
Web服务器是将请求/页面传递到Internet上的客户端/用户的基础
Web框架使用Web服务器将请求传递到客户端,但不是Web服务器。
您可以将Nginx放在node.js的前面。Nginx是经过验证的Web服务器,它将在node.js崩溃时继续运行
Nginx是web服务器,又比较特殊,它后面还能接其他服务器,后面可以接tomcat,Apache,nodejs,也可以接php-fpm跑php,nodejs跑js,有2种,一是用js编后端,就跟java,php一样。二是做前端工具。最常见的还是后者。
Apache之能和其他语言配合,需要借助不同的模块,Nginx则是通过端口转发,所以Apache和Nginx可以和各种编程语言一起使用,但Node只能用js,Tomcat只能用java。