Django部署時為什么要用 uWSGI與 Nginx? 以及 WSGI,uwsgi等協議



Django框架的服務器架構一般是 Nginx + uWSGI + Django


(1)一些基本概念


1 WSGI協議,uwsgi協議

	WSGI協議(通訊協議):Python用於Web開發的協議(用於處理Web服務器和應用程序(APP)的交互信息)

	(把http通訊的過程抽象出來(請求數據,響應數據的封裝),開發者只負責處理中途的數據) 


	uwsgi協議(傳輸協議,速度很快):uWSGI程序實現的一個自有的協議(采用二進制來存儲數據,之前的協議都是使用字符串,所以在存儲空間和解析速度上,都更快)

注意:

	WSGI是一種通信協議。
	
	uwsgi是一種線路協議而不是通信協議,在此常用於在uWSGI服務器與其他網絡服務器的數據通信。

Web框架一般都自帶wsgi服務器 但是性能不好,只作測試用途。(django--wsgiref)


2 wsgiref模塊(django 框架自帶)

python提供的,用於測試和學習的簡單的WSGI服務器模塊。

	這個模塊監聽8000端口,把Http請求,根據WSGI協議,轉換application函數中的environ參數,然后調用application函數。 
	wsgiref會把application函數提供的響應頭設置轉換為HTTP協議的響應頭,把application的返回(return)作為響應體,根據HTTP協議,生成響應,返回給瀏覽器。

3 uWSGI服務器

	uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。

4 為什么要使用Nginx 來做負載均衡

Nginx

	1 安全(Nginx 作為專業服務器,暴露在公網相對比較安全)

	2 能更好地處理靜態資源(一些http request header)

	3 Nginx也可以緩存一些動態內容Nginx可以更好地配合CDN

	4 可以進行多台機器的負載均衡

當然,如果訪問量不大,其實也沒必要加個Nginx,uWSGI足以勝任。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM