推荐先看:uWSGI应用服务器(WSGI /uwsgi /uWSGI三者区别)
- WSGI是一种通信协议。
- uwsgi是一种传输协议。
- uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
1、在有nginx代理时,uwsgi、nginx、应用程序是怎么工作的?
-
客户端(如浏览器)发起HTTP请求,请求被发送到Nginx这个Web服务器。
-
Nginx接收到请求后,根据配置决定如何处理。如果请求需要动态生成(如Python脚本),Nginx会将请求通过
uwsgi 传输协议
,通过socket发送到uWSGI这个应用服务器。 -
uWSGI服务器接收到请求后,会将其转化为
WSGI 通信协议
的请求,然后通过socket发送给Python应用(如Flask)。 -
Python应用处理请求,生成响应,然后通过socket发送回uWSGI服务器。
-
uWSGI服务器接收到响应后,再通过socket发送回Nginx。
-
Nginx接收到响应后,再返回给客户端。
这个过程中,Nginx web服务器、uWSGI应用服务器 和 Python应用 之间的通信都是通过socket通信完成的。Nginx 和 uWSGI 之间的通信使用uwsgi 协议,uWSGI 和 Python 应用之间的通信使用 WSGI 协议。
2、web服务器、http服务器、应用服务器
- HTTP服务器 是 Web服务器 的一种
HTTP服务器和Web服务器在很多情况下可以互换使用,它们都是处理HTTP请求的服务器,可以为客户端提供HTML网页等静态Web资源。
① HTTP-Hypertext Transfer Protocol,超文本传输协议是互联网上应用最为广泛的一种网络协议。HTTP服务器就是遵循HTTP协议,通过互联网或者局域网将网页(HTML文件)、图片、视频等静态Web资源传送给客户端的服务器。
② Web服务器一般指的是提供Web服务的服务器,可以处理HTTP请求,返回网页给客户端。HTTP服务器是Web服务器的一种,但是Web服务器除了处理HTTP请求外,还可能会支持HTTPS(HTTP Secure,安全超文本传输协议)、FTP(File Transfer Protocol,文件传输协议)等其他协议。 - 应用服务器
主要任务是运行Web应用程序,并响应来自Web服务器(如Nginx)的请求。
在生产环境中,通常会使用专门的Web服务器(如Nginx或Apache)来处理静态文件请求和负载均衡等,而动态内容的请求则转发给应用服务器(如uWSGI)处理。
(1)uWSGI服务器是一种应用服务器,虽然它可以直接处理HTTP请求,但它并不是一个完全的HTTP服务器,它在处理静态文件、负载均衡等方面的性能可能不如专门的HTTP服务器。
(2)tomcat是个web服务器,也是个轻量级应用服务器