反向代理,部署在Web服务器上,代理所有外部网络对内部网络的访问。浏览器访问服务器,必须经过这个代理,是被动的。
正向代理的主动方是客户端,反向代理的主动方是Web服务器。
结构图:
反向代理的作用:
安全,客户端对Web服务器的访问需要先经过反向代理服务器。这样可以防止外部程序对Web服务器的直接攻击。
负载均衡,反向代理服务器可以根据Web服务器的负载情况,动态地把HTTP请求交给不同的Web服务器来处理,前提是要有多个Web服务器。
提升Web服务器的IO性能。一个HTTP请求的数据,从客户端传输给服务器,是需要时间的,例如N秒,如果直接传给Web服务器,Web服务器就需要让一个进程阻塞N秒,来接收IO,这样会降低Web服务器的性能。如果使用反向代理服务器,先让反向代理服务器接收完整个HTTP请求,再把请求发给Web服务器,就能提升Web服务器的性能。还有一些静态文件的请求,可以直接交给反向代理来处理,不需要经过Web服务器。
Nginx是一个高性能的HTTP和反向代理服务器。
Nginx+uWSGI+应用程序的架构:
其中Nginx和uWSGI之间可以通过CGI,FCGI和uwsgi协议通信,当然uwsgi的性能是最好的。
四、总结uWSGI+Django比单独使用Django的好处:
支持的并发量更高
方便管理多进程,发挥多核的优势
提升性能,因为uwsgi协议比WSGI协议有优势
Nginx+uWSGI+Django比uWSGI+Django好处(参考反向代理的作用):
更多参考
Nginx+uWSGI+Supervisor在Ubuntu上部署Flask应用
uWSGI+Django+Nginx的工作原理流程与部署过程
Nginx+uWSGI+Django+Python 应用架构部署
Ubuntu Server 14.04.2 LTS 配置 Nginx + Uwsgi + Django