nginx 與 uWsgi 詳解


什么是nginx

nginx是一個開源的,支持高性能,高並發的代理服務軟件
nginx不但是一個優秀的web服務軟件,還可以作為反想代理和負載均衡,以及緩存服務或使用

為什么使用nginx

支持高並發,能支持幾萬個並發鏈接
資源消耗少,三萬並發編程開啟10個nginx線程消耗不到200m
可以做反向代理和負載均衡
支持異步網絡io事件模型epoll

 

nginx、WSGI、uwsgi、uWSGI、django這幾個關系

wsgi 本身不是服務器,也不是python模塊,只是一種協議,鏈接着server 和 App,描述兩者之間的規則

uwsgi 和wsgi一樣是通信協議,是uWSGI服務器的單獨形式,用於自定義傳輸類型

uWSGI 是一個web服務器,實現了WSGI協議,uwsgi協議

nginx  web服務器,更加安全,更好的處理靜態資源,緩存功能,負載均衡,配合uWSGI服務器會更加安全

 

nginx和uWSGI 的意義

nginx接收到瀏覽器的http請求,將包進行解析,分析url,如果是靜態文件直接訪問用戶給nginx配置靜態文件目錄,如果不是靜態文件,是一個動態請求,nginx會轉發給uwsgi,
uwsgi接到請求會進行處理成wsgi可以接受的形式,並發給wsgi,wsgi根據請求調用應用程序的某個文件,
某個文件的某個函數處理完會返回給wsgi,wsgi將返回值進行打包,打包成uwsgi能夠接受的格式,uwsgi接受wsgi的發送請求,轉發給nginx,nginx最終將返回值返回給瀏覽器

 

為什么不用uWSGI作為唯一服務器

1 安全問題,程序不能直接被瀏覽器訪問到,而是通過nginx,nginx只開放某個接口,uwsgi本身是內網接口,這樣運維人員在nginx上加上安全性的限制,可以達到保護程序的作用。

2負載均衡問題,一個uwsgi很可能不夠用,即使開了多個work也是不行,畢竟一台機器的cpu和內存都是有限的,有了nginx做代理,一個nginx可以代理多台uwsgi完成uwsgi的負載均衡。

3靜態文件問題,用django或是uwsgi這種東西來負責靜態文件的處理是很浪費的行為,而且他們本身對文件的處理也不如nginx好,所以整個靜態文件的處理都直接由nginx完成,靜態文件的訪問完全不去經過uwsgi以及其后面的東西。

 

 

 

 

 

 

 

 

 

 

 

 

nginx的反向代理和數據轉發區別

反向代理
1.接收請求,完成請求處理
2.接收響應,返回告知響應

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM