Nginx介绍
简单介绍
WSGI:Web网关接口(W web、S server、G gateway、I interface)俗称:web容器,web服务器。
Nginx 也是一个服务器软件,可以做:反向代理,负载均衡。Nginx 背后可以有多个 WSGI 服务器。
例如:比如一台WSGI Server可以支撑1万的访问量,Nginx后面挂三个WSGI Server就可以支撑3万。
例如:可以做负载均衡,第一个请求落在WSGI SERVER 1上,第二个请求落在2上,依次负责请求。
说明:客户端(用户)发送请求来访问 Flask app应用,首先是访问到Nginx服务器软件上面,Nginx后面可能会有多个 WSGI SERVER 做反向代理和负载均衡。
python代码是不能直接交给Nginx上运行的( Nginx不知道如何执行python代码,它知道如何展示图片和静态HTML) 正是因为Nginx不知道如何执行我
们的python程序,我们的python代码是在WSGI SERVER中执行的,WSIG SERVER才是我们真正的web服务器(可能会有多个python代码服务WSGI
SERVER),WSGI SERVER执行完后会返回HTTP响应,HTTP响应会交给Nginx,Nginx再去交给客户端。
注意:Nginx服务器软件是一款无论你使用说明语言开发程序都可以使用的服务器软件,性能非常强悍,用户多社区活跃,出问题情况安全漏洞少。
而uWSGI是支持python语言开发的服务器,也可以支持一些其他语言,但是用户量非常少。虽然性能还可以,但是用户量少、社区不活跃,
所以没有Nginx成熟,所以Nginx是一款非常成熟、稳妥的选择。所以在工作中都会选择Nginx放在最外层接受用户的请求,Nginx接受完请求
后,Nginx再把请求转发给真正的去运行我们python代码程序的服务器uWSGI,然后其去执行我们的python代码。
工作原理:「正向代理:隐藏了用户的细节;反向代理:隐藏了服务器的细节」
Nginx做HTTP服务器如蓝线所示,直接对接的是静态资源;Nginx做反向代理服务器如绿线所示,对接的是另外的服务器,Nginx只是做请求的转发处理
工作流程:
-
开发模式:浏览器(chrome) <===> 开发服务器(Flask WSGI Server/runserver) <=> Python程序(Flask) <===> 数据库(MySQL)
-
生产模式:浏览器(chrome) <===> 反向代理服务器(Nginx) <=> WSGI服务器(uWSGI) <=> Python程序(Flask) <===> 数据库(MySQL)
- 工作流程:用户的请求访问到Nginx上面,Nginx会对后面的业务做负载均衡,反向代理。其后面可能会有多个python代码服务与其对接
Python程序是不能直接在Nginx执行的,所有需要我们的Python程序在WSGI SERVER容器中去完成执行的,执行完后返回响应交个
Nginx,执行完的python程序交个Nginx后,再由Nginx去返回给我们的客户端去响应