WSGI區分為兩個部分:一為“服務器”或“網關”,另一為“應用程序”或“應用框架”。在處理一個WSGI請求時,服務器會為應用程序提供環境信息及一個回調函數(Callback Function)。當應用程序完成處理請求後,透過前述的回調函數,將結果回傳給服務器。
所謂的WSGI中間件同時實現了API的兩方,因此可以在WSGI服務器和WSGI應用之間起調解作用:從Web服務器的角度來說,中間件扮演應用程序,而從應用程序的角度來說,中間件扮演服務器。“中間件”組件可以執行以下功能:
重寫環境變量後,根據目標URL,將請求消息路由到不同的應用對象。
允許在一個進程中同時運行多個應用程序或應用框架。
負載均衡和遠程處理,通過在網絡上轉發請求和響應消息。
進行內容後處理,例如應用XSLT樣式表
WSGI是一個協議,服務器實現了WSGI規范,application應用實現了WSGI規范,這樣服務器和應用才可以結合
uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。Nginx中HttpUwsgiModule的作用是與uWSGI服務器進行交換。
要注意 WSGI / uwsgi / uWSGI 這三個概念的區分。
WSGI是一種通信協議。
uwsgi是一種線路協議而不是通信協議,在此常用於在uWSGI服務器與其他網絡服務器的數據通信。
而uWSGI是實現了uwsgi和WSGI兩種協議的Web服務器。
uwsgi協議是一個uWSGI服務器自有的協議,它用於定義傳輸信息的類型(type of information),每一個uwsgi packet前4byte為傳輸信息類型描述,它與WSGI相比是兩樣東西。