web应用层详解part3----部署Python程序

web应用层详解part3----部署Python程序

nginx组件


一个协议至少有两方去遵守,以协议作为点,有上游和下游。

在web应用层,建议当一个nginx当做上游,作为上游时支持的协议有三种并支持三种nginx的转发指令:proxy_pass http:// (转发http协议)、fastcgi_pass (转发fastcgi协议)、uwsgi_pass (转发uwsgi协议)。在web层最上游就是nginx了,用这三种协议往下转发数据包。

nginx本身也有上游,当nginx本身作为被代理者时(作为下游),对外暴露的协议有http协议、tcp协议

 

python语言体系相关协议


python写出的web程序就分为两部分:web服务+web应用。

服务于应用之间的协议:wsgi、asgi

  wsgi:Web Server Gateway Interface,web服务器网关接口,本质就是对http协议的进一步封装,用于在web服务器于web应用之间的一种通信规范。

  asgi:Asynchronous Server Gateway Interface,这是wsgi的异步版本,性能更强,功能更多。

服务有两个:

  uwsgi:往下游app发的是wsgi协议

  daphne:往下游app发的是asgi协议

服务的上游:

  uwsgi服务:支持上游的uwsgi协议、http协议

  daphne服务:支持上游的http协议

 

python语言体系对比php语言体系


python服务uwsgi:

  对下游:wsgi协议

  对上游:http协议(可以直接被浏览器访问)、uwsgi协议

python服务daphne:

  对下游:asgi协议

  对上游:http协议(可以直接被浏览器访问)

php服务php-fpm:

  对下游:无协议

  对上游:fastcgi协议,不支持http协议(不能直接用浏览器访问)

  web服务器上,php-fpm上游最好跟一个nginx,nginx对上游暴露http协议、tcp。这样更加灵活也就诞生了lnmp。

6ef75260471a2685cf9eb2f2c09c968a

 

部署python web应用方案介绍


建议方案:

  在web层上最上游挡一个nginx服务,然后nginx服务代理着uwsgi,uwsgi服务再负责拉起python应用程序。

  七层负载均衡--------web层(nginx服务(uwsgi_pass)----uwsgi协议----uwsgi服务(监听uwsgi协议)----wsgi协议---->python应用程序)

uwsgi服务怎么控制监听什么协议?(针对上游)

  uwsgi服务的配置文件:uwsgi.ini

    http : 代表监听http协议端口,针对这个在nginx配置里需要用proxy_pass

    socket : 代表监听uwsgi协议的端口,针对这个在nginx配置里需要有uwsgi_pass。(建议该方案,因为速度更快)

proxy_pass:http协议
fastcgi_pass:fastcgi协议
uwsgi_pass:uwsgi协议
 
强调:
1、uwsgi服务的配置文件uwsgi.ini
http = :8080 代表uwsgi服务监听http协议端口
socket = :8080 代表uwsgi服务监听uwsgi协议的端口
 
针对前者,在nginx里需要用proxy_pass转发
针对后者,在nginx里需要用uwsgi_pass转发
 
2、uwsgi协议肯定http协议更快
 
3、针对python体系-asgi协议,nginx配置转发给daphne服务,用的就是proxy_pass,
因为daphne支持的http协议,没有asgi_pass这种东西

 

 
posted @ 2025-10-15 11:52  张仁国  阅读(5)  评论(0)    收藏  举报
目录代码