关于django中使用nginx和uWSGI的知识补充

关于django中使用nginx和uWSGI的知识补充

刚开始只是跟着教程配置nginx和uwsgi,并没有深入去查这两个是什么东西,有什么作用。

刚刚查了一番,有了简单了解,记录一下。

nginx是什么

Nginx(engine x)是一个高性能的http和反向代理web服务器,同时提供了电子邮件(IMAP/POP3)代理服务器。

因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。

适用于处理高并发的web应用程序和(作为反向代理进行)负载均衡。

Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。这里说说其反向代理的应用。

正向代理

在说反向代理之前,要先说说正向代理。

小明要访问google,访问不了。他用了一个vpn之后终于可以访问google了。

小明<--->正向代理服务器<--->google
image

小明通过vpn连接到了一个服务器,通过这个服务器代理小明的请求,终于访问了google去搜索自己喜欢的东西啦

这个就是简单的正向代理,代理客户端的请求,去访问客户明确访问的服务器地址。google只清楚请求来自哪个代理服务器,正向代理模式屏蔽或隐藏了真实客户端的信息。

反向代理

接下来看看反向代理。

双十一到了,我们要好多好多人都要去某宝购买自己喜欢的商品。

某宝使用了分布式部署服务器来解决访问人数限制的问题。

image

对于某用户的一个请求,会转发到多个后端处理器中的一台来处理该具体请求。

反向代理,代理的是服务器端,代服务器端接受请求。反向代理主要用于服务器集群分布式部署的情况下,隐藏了服务器的信息。
可以实现负载均衡优化网站负载。
可以将反向代理作为公网访问的地址,保护内网安全

回到开始的问题,nginx是什么?是一个web服务器和反向代理服务器,可以接受客户的请求,并通过反向代理将请求发送给后端web应用服务器

web服务器与web应用服务器区别

web服务器和web应用服务器是不同的东西。

web服务器是用于处理http请求和响应的软件,通常用于静态内容(html,css,js,img等文件)的服务和处理。

web应用服务器是一个具有处理动态内容(数据库查询,业务逻辑等)的web应用程序能力的服务器。一般由web框架(比如django)或其他类型的应用程序(如java EE)提供支持

在一个典型的web应用程序架构中,web服务器会处理静态文件和负载均衡,web应用服务器负载处理动态内容。

两者通常可以配合使用来提高web应用程序的性能和可扩展性。
比如:web服务器(如nginx)可以充当反向代理,将客户端请求转发到多个web应用服务器(如uWSGI)中的一个来处理动态内容,并返回响应。

uWSGI是什么

首先,WSGI / uwsgi / uWSGI 这三个概念的区分:
查了一些资料,很多描述还是有很大出入,这里摘抄了百度百科的解释

WSGI 通信协议
uwsgi 线路协议,用于uWSGI与其他网络服务器数据通信
uWSGI 实现了uwsgi和WSGI写一个的web服务器

uWSGI是一个web应用服务器,网上也有说uWSGI是web服务器,其实uWSGI可以作为web服务器或web应用服务器使用,具体取决于怎么去配置使用它。

uWSGI具有超快性能,低内存占用,多app管理等等很多优点

Nginx和uWSGI是怎么在django项目中作用的

当在Django项目中使用了Nginx + uWSGI时。

具体架构是这样:

1.客户端发送请求到Nginx
2.Nginx作为反向代理服务器,将请求转发给uWSGI
3.uWSGI运行Django应用程序处理请求
4.Django应用程序生成响应返回给uWSGI
5.uWSGI将响应返回给Nginx
6.Nginx将响应返回给客户端

image

posted @ 2023-03-06 15:00  r涤生  阅读(137)  评论(0编辑  收藏  举报