類似Django,express.js這樣的框架本身就具有處理後端的能力,為什麼在開發的環境中一般都要部署Apache,Nginx這樣的伺服器程式呢?
習慣沉默2017-05-16 17:01:04
在不同的網路環境裡面,對網路的需求,不僅是能夠進行網路通信,還需要很多不同的需求,如果不將伺服器隔離開來,那麼會相當不靈活,處理這些需求,會很費事,甚至無法完成。以下是一些需求:
高效能:nginx和apache透過配置就可以大大的提高不同場景下的效能,對高並發更加是優化得很徹底了。
安全:對ssl的支持,憑證的支持,其他伺服器很可能沒實現或實作不統一。
代理分發:統一了入口點,避免暴露內部複雜的環境。
巴扎黑2017-05-16 17:01:04
Django教學一開始就說了:
截取自:https://docs.djangoproject.co...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 – having to deal with configuring a production server – having to 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 develo ping.
Django自帶的Web Server只是為了簡化開發環境,人家根本就不是打算做一整個可靠的Web伺服器,絕對
不要在線上生產環境使用。線上還是需要使用專業的伺服器。這點就不同於Tornado,人家本身就是一個可靠的伺服器。
至於Node.js,的確可以使用自帶的,也沒什麼問題,但是你要知道,Node.js是單線程的。 那個你有個32核的伺服器,跑個單執行緒的Node.js程式就太浪費了,所以就會啟動多個Node.js進程,分別監聽不同的埠號,再用Nignx做反向代理,這樣就可以最大化利用伺服器資源。