uwsgi和nginx的故事
要談uwsgi,當(dāng)然要先談?wù)剋sgi,wsgi是理論家牛頓,uwsgi就是工程家特斯拉。
wsgi是縮寫,全稱為web server gateway interface,中文意思就是服務(wù)器的網(wǎng)關(guān)接口。它是一種通用的接口標(biāo)準(zhǔn),使python 應(yīng)用程序和服務(wù)器之間可以開始交互了,我更樂意把接口想成翻譯官。
uwsgi我們可以看成是一個(gè)軟件,應(yīng)用程序。它幫助我們把wsgi協(xié)議給實(shí)現(xiàn)了,同時(shí)也實(shí)現(xiàn)了http協(xié)議,這樣我們可以不再關(guān)注底層網(wǎng)絡(luò)通信的實(shí)現(xiàn),而把精力用在業(yè)務(wù)邏輯上面。
nginx和apache等都是常見的靜態(tài)服務(wù)器,主要用于處理靜態(tài)請求,而對于動(dòng)態(tài)生成的html,則可以利用其它應(yīng)用程序 實(shí)現(xiàn),我這里是用的是python的框架django。而django與nginx服務(wù)器之間想要很好的通信的話,就必然需要使用wsgi協(xié)議了,我們可以在django框架里面按照wsgi協(xié)議的標(biāo)準(zhǔn)寫出接口和nginx通信,這是可以的,其實(shí)django內(nèi)置了一個(gè)實(shí)現(xiàn)了wsgi接口的應(yīng)用,但性能極差。無論多么復(fù)雜的Web應(yīng)用程序,入口都是一個(gè)WSGI處理函數(shù)。HTTP請求的所有輸入信息都可以通過environ獲得,HTTP響應(yīng)的輸出都可以通過start_response()加上函數(shù)返回值作為Body。有句話說的好:do not repeat youself,不要重復(fù)造輪子。已經(jīng)有寫好的非常不錯(cuò)的實(shí)現(xiàn),那就是uwsgi,它也是一個(gè)服務(wù)器,可以說就是中間人的角色,左接nginx,右連django。
?
uwsgi又是怎樣實(shí)現(xiàn)這種連接的呢?
首先要講的是,uwsgi的并發(fā)能力很強(qiáng),但是它處理靜態(tài)文件能力很不理想。所以一般靜態(tài)文件就交由nginx處理。uwsgi與nginx之間是通過套接字socket就行通信的,他們之間的交互可以理解為是兩個(gè)進(jìn)程之間的交互,而它通過實(shí)現(xiàn)wsgi協(xié)議,可以與python寫的應(yīng)用程序進(jìn)行交互,這里也就是django框架。
轉(zhuǎn)載于:https://www.cnblogs.com/gj827/p/9776284.html
總結(jié)
以上是生活随笔為你收集整理的uwsgi和nginx的故事的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浏览器跨域办法
- 下一篇: SHELL实战day12