Preliminary
- 網關的作用就是在協議之間進行轉換。 uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。 Nginx中
- HttpUwsgiModule的作用是與uWSGI服務器進行交互。
- wsgi server OR wsgi application均是實現了wsgi 協議的server OR application
- uwsgi協議<服務器和服務端應用程序的通信協議,規定了怎麼把請求轉發給應用程序和返回>是一個uWSGI服務器自有的協議,它用於定義傳輸信息的類型(type
of information),每一個uwsgi packet前4byte爲傳輸信息類型描述,它與WSGI相比是兩樣東西。 - Gunicorn 是實現WSGI和HTTP協議的服務器
wsgi server 和wsgi application,WSGI之間的互動
wsgi server (比如uWSGI) 要和 wsgi application(比如django )交互,uWSGI需要將過來的請求轉給wsgi application處理,那麼uWSGI 和 wsgi application的交互和調用就需要一個統一的規範,這個規範就是WSGI WSGI(Web Server Gateway Interface)
WSGI<基於現存的 CGI 標準設計>,全稱 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是爲 Python 語言定義的 Web 服務器和 Web 應用程序或框架之間的一種簡單而通用的接口。In other words, 它是一個Web服務器(如nginx,uWSGI等服務器)與web應用(如用Flask框架寫的程序)通信的一種規範
WSGI / uwsgi / uWSGI區分
WSGI是一種通信協議。
uwsgi是一種線路協議 而不是通信協議,在此常用於在uWSGI服務器與其他網絡服務器的數據通信。
而uWSGI是實現了uwsgi和WSGI兩種協議的Web服務器。
FastCgi協議, uwsgi協議, http協議有什麼用?
nginx 和 uWSGI交互就必須使用同一個協議,而上面說了uWSGI支持FastCgi,uwsgi,http協議,這些都是nginx支持的協議,只要大家溝通好使用哪個協議,就可以正常運行了。
餿主意
全小寫是線路協議。eg.
<u>wsgi
全大寫是通信協議。eg. WSGI
第一個字母小寫,其餘全大寫是web 服務器。 eg.uWSGI,實現了uwsgi 和WSGI協議
圖解