概念解析:
- WSGI
是Python应用程序或框架和Web服务器之间的一种接口,WSGI 没有官方的实现, 因为WSGI更像一个协议. 只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行, 反之亦然。 WSGI标准在 PEP 333 中定义并被许多框架实现,其中包括现广泛使用的django框架。所以说WSGI是一种标准
- uWSGI
可以看作是一个应用程序,帮助我们实现WSGI协议,Http协议,这样我们可以不再关注网络通信的底层实现,将精力更多放在处理HTTP请求数据,返回HTML。利用uWSGI可以是我们的web应用得到更强的并发能力,uWSGI也可以返回静态文件(css,js,img…),但是很笨拙,一般静态文件都交由Nginx进行传输,所以配置中一般不配置static-map,如果直接由uWSGI接受HTTP请求则需要设置http:xxxx,如果只需要与反向代理服务器进行交互则只需要接受socket,uWSGI与Nginx交互相当于两个进程间交互,一般使用的是.sock文件或者指定端口接受socket。指定端口时再使用浏览器访问相应端口,uWSGI会提示skip,跳过该HTTP请求。
- Nginx
Nginx接受来自客户端的Http请求发送给uWSGI,uWSGI处理请求并将关键信息传递给web应用(django,flask等),应用返回Response经由uWSGI发送给Nginx,Nginx再发送给客户端。 同时结合keepalived对前端nginx实现HA高可用,Keepalived是Linux下面实现VRRP备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障