一文搞懂 CGI, FastCGI, WSGI, uWSGI, uwsgi

tslam發表於2024-04-04
CGI: Common Gateway Interface
WSGI: Web Server Gateway Interface
圖解
注意: django專案是跑在uWSGIweb伺服器上的
一文搞懂 CGI, FastCGI, WSGI, uWSGI, uwsgi一文搞懂 CGI, FastCGI, WSGI, uWSGI, uwsgi
問題:有 uWGSI 了,Django 為什麼還需要 Nginx?
一個普通的個人網站,訪問量不大的話,當然可以由 uWSGI 和 Django 構成。但是一旦訪問量過大,客戶端請求連線就要進行長時間的等待。這個時候就出來了分散式伺服器,我們可以多來幾臺 Web 伺服器,都能處理請求。
但是誰來分配客戶端的請求連線和 Web 伺服器呢?Nginx 就是這樣一個管家的存在,由它來分配。這也就是由 Nginx 實現反向代理,即代理伺服器。
正向代理:正向的就是由瀏覽器主動的想代理伺服器發出請求,經代理伺服器做出處理後再轉給目標伺服器一文搞懂 CGI, FastCGI, WSGI, uWSGI, uwsgi一文搞懂 CGI, FastCGI, WSGI, uWSGI, uwsgi
Nginx 是一個 HTTP 和反向代理伺服器
一文搞懂 CGI, FastCGI, WSGI, uWSGI, uwsgi一文搞懂 CGI, FastCGI, WSGI, uWSGI, uwsgi
反向代理:反向的就是不管瀏覽器同不同意,請求都會經過代理伺服器處理再發給目標伺服器
使用Nginx作為反向代理伺服器的好處:
安全
不管什麼請求都要經過代理伺服器,可以避免外部程式直接攻擊Web伺服器
負載均衡
根據請求情況和伺服器負載情況,將請求分配給不同的Web伺服器,保證伺服器效能
提高Web伺服器的IO效能
請求從客戶端傳到Web伺服器是需要時間的,傳遞多長時間就會讓這個程序阻塞多長時間,而透過反向代理,就可以由反向代理完整接受該請求,然後再傳給Web伺服器,從而保證伺服器效能,而且有的一些簡單的事情(比如靜態檔案)可以直接由反向代理處理,不經過Web伺服器
其他參考
一文搞懂 CGI, FastCGI, WSGI, uWSGI, uwsgi一文搞懂 CGI, FastCGI, WSGI, uWSGI, uwsgi

相關文章