6 回答

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
Flask是一個(gè)使用Python編寫的輕量級(jí)Web應(yīng)用框架。其WSGI工具箱采用Werkzeug,模板引擎則使用Jinja2。Flask使用BSD授權(quán)。

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
uwsgi
同 wsgi 一樣也是一種協(xié)議,uWSGI服務(wù)器正是使用了 uwsgi 協(xié)議
2. uWSGI
實(shí)現(xiàn)了 uwsgi 和 WSGI 兩種協(xié)議的web服務(wù)器。注意 uWSGI 本質(zhì)上也是一種 web服務(wù)器,處于上面描述的三層結(jié)構(gòu)中的 web服務(wù)器層。
3. CGI
通用網(wǎng)關(guān)接口,并不限于 Python 語言,定義了 web服務(wù)器是如何向客戶端提供動(dòng)態(tài)的內(nèi)容。例如,規(guī)定了客戶端如何將參數(shù)傳遞給 web服務(wù)器,web服務(wù)器如何將參數(shù)傳遞給 web應(yīng)用,web應(yīng)用如何將它的輸出如何發(fā)送給客戶端,等等。

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
1 首先nginx 是對(duì)外的服務(wù)接口,外部瀏覽器通過url訪問nginx,
2nginx 接收到瀏覽器發(fā)送過來的http請(qǐng)求,將包進(jìn)行解析,分析url,如果是靜態(tài)文件請(qǐng)求就直接訪問用戶給nginx配置的靜態(tài)文件目錄,直接返回用戶請(qǐng)求的靜態(tài)文件,
如果不是靜態(tài)文件,而是一個(gè)動(dòng)態(tài)的請(qǐng)求,那么nginx就將請(qǐng)求轉(zhuǎn)發(fā)給uwsgi,uwsgi 接收到請(qǐng)求之后將包進(jìn)行處理,處理成wsgi可以接受的格式,并發(fā)給wsgi,wsgi 根據(jù)請(qǐng)求調(diào)用應(yīng)用程序的某個(gè)文件,某個(gè)文件的某個(gè)函數(shù),最后處理完將返回值再次交給wsgi,wsgi將返回值進(jìn)行打包,打包成uwsgi能夠接收的格式,uwsgi接收wsgi 發(fā)送的請(qǐng)求,并轉(zhuǎn)發(fā)給nginx,nginx最終將返回值返回給瀏覽器。
3要知道第一級(jí)的nginx并不是必須的,uwsgi完全可以完成整個(gè)的和瀏覽器交互的流程,但是要考慮到某些情況
1 安全問題,程序不能直接被瀏覽器訪問到,而是通過nginx,nginx只開放某個(gè)接口,uwsgi本身是內(nèi)網(wǎng)接口,這樣運(yùn)維人員在nginx上加上安全性的限制,可以達(dá)到保護(hù)程序的作用。
2負(fù)載均衡問題,一個(gè)uwsgi很可能不夠用,即使開了多個(gè)work也是不行,畢竟一臺(tái)機(jī)器的cpu和內(nèi)存都是有限的,有了nginx做代理,一個(gè)nginx可以代理多臺(tái)uwsgi完成uwsgi的負(fù)載均衡。
3靜態(tài)文件問題,用django或是uwsgi這種東西來負(fù)責(zé)靜態(tài)文件的處理是很浪費(fèi)的行為,而且他們本身對(duì)文件的處理也不如nginx好,所以整個(gè)靜態(tài)文件的處理都直接由nginx完成,靜態(tài)文件的訪問完全不去經(jīng)過uwsgi以及其后面的東西。
添加回答
舉報(bào)