类似于Django,express.js这样的框架本身就具有处理后端的能力,为什么在开发的环境中一般都要部署Apache,Nginx这样的服务器程序呢?
習慣沉默2017-05-16 17:01:04
在不同的网络环境里面,对网络的需求,不仅仅是能够进行网络通信,还需要很多不同的需求,如果不将服务器隔离开来,那么会相当不灵活,处理这些需求,会很费事,甚至无法完成。下面是一些需求:
高性能:nginx和apache通过配置就可以大大的提高不同场景下的性能,对高并发更加是优化得很彻底了。
安全:对ssl的支持,证书的支持,其他服务器很可能没实现或者实现不统一。
代理分发:统一了入口点,避免暴露内部复杂的环境。
巴扎黑2017-05-16 17:01:04
Django教程一开始就说了:
You’ve started the Django development server, a lightweight Web server written purely in Python. We’ve included this with Django so you can develop things rapidly, without having to deal with configuring a production server – such as Apache – until you’re ready for production.
Now’s a good time to note: don’t use this server in anything resembling a production environment. It’s intended only for use while developing. (We’re in the business of making Web frameworks, not Web servers.)
截取自:https://docs.djangoproject.co...
Django自带的Web Server只是为了简化开发环境,人家根本就不是打算做一整个靠谱的Web服务器,绝对不要在线上生产环境使用。线上还是需要使用专业的服务器。这一点就不同于Tornado,人家本身就是一个靠谱的服务器。
至于Node.js,的确可以使用自带的,也没什么问题,但是你要知道,Node.js是单线程的。
那个你有个32核的服务器,跑个单线程的Node.js程序就太浪费了,所以就会启动多个Node.js进程,分别监听不同的端口号,再用Nignx做反向代理,这样就可以最大化利用服务器资源。