1. 程式人生 > >nginx uwsgi wsgi 是什麼關係

nginx uwsgi wsgi 是什麼關係

1 首先nginx 是對外的服務介面,外部瀏覽器通過url訪問nginx,

2nginx 接收到瀏覽器傳送過來的http請求,將包進行解析,分析url,如果是靜態檔案請求就直接訪問使用者給nginx配置的靜態檔案目錄,直接返回使用者請求的靜態檔案,

如果不是靜態檔案,而是一個動態的請求,那麼nginx就將請求轉發給uwsgi,uwsgi 接收到請求之後將包進行處理,處理成wsgi可以接受的格式,併發給wsgi,wsgi 根據請求呼叫應用程式的某個檔案,某個檔案的某個函式,最後處理完將返回值再次交給wsgi,wsgi將返回值進行打包,打包成uwsgi能夠接收的格式,uwsgi接收wsgi 傳送的請求,並轉發給nginx,nginx最終將返回值返回給瀏覽器。

3要知道第一級的nginx並不是必須的,uwsgi完全可以完成整個的和瀏覽器互動的流程,但是要考慮到某些情況

1 安全問題,程式不能直接被瀏覽器訪問到,而是通過nginx,nginx只開放某個介面,uwsgi本身是內網介面,這樣運維人員在nginx上加上安全性的限制,可以達到保護程式的作用。

2負載均衡問題,一個uwsgi很可能不夠用,即使開了多個work也是不行,畢竟一臺機器的cpu和記憶體都是有限的,有了nginx做代理,一個nginx可以代理多臺uwsgi完成uwsgi的負載均衡。

3靜態檔案問題,用django或是uwsgi這種東西來負責靜態檔案的處理是很浪費的行為,而且他們本身對檔案的處理也不如nginx好,所以整個靜態檔案的處理都直接由nginx完成,靜態檔案的訪問完全不去經過uwsgi以及其後面的東西。

這就是這幾者之間的關係。