谈一下你对 uWSGI 和 nginx 的理解?
-
uWSGI 是一个 Web 服务器,它实现了 WSGI 协议、uwsgi协议、http协议 等。
- WSGI 是一种通信协议。
- uwsgi 是一种线路协议而不是通信协议,常用于在 uWSGI 服务器与其他网络服务器的数据通信。
-
Nginx是轻量级的高性能Web服务器,提供反向代理、负载均衡、缓存等一系列重要特性。
- 用 C 语言编写,执行效率高
- 稳定性高,最大支持 5 万个并发连接,但只占用很少的内存空间。
-
uWSGI 和 nginx 怎么通信的?
- 首先浏览器发起 http 请求到 nginx 服务器,它们之间走的是 http 协议,nginx 根据接收到请求包,进行 url 分析,判断访问资源的类型。
- 如果是静态资源,直接读取静态资源返回给浏览器,如果请求的是动态资源就转交给 uWSGI 服务器。
- 因为 nginx 和 uWSGI 都懂 uwsgi 协议,uwsgi 为纯二进制的协议,不用去封装七层协议中的协议体中的各种状态位。效率比较快,所以 nginx 和 uWSGI 之间走 uwsgi 协议。此时 uWSGI 需要通过 socket 模式启动。【http 纯文本型协议(超文本传输),效率不是很高】
- uWSGI 服务器根据自身的 WSGI 协议,找到对应的 Django 框架。
- Django 框架下的应用进行逻辑处理后,将返回值发送到 uWSGI 服务器。
- uWSGI 服务器再返回给 nginx,最后 nginx 将返回值返回给浏览器进行渲染显示给用户。
-
nginx 正向代理和反向代理?
-
正向代理:请求经过代理服务器从局域网发出,然后到达互联网上的服务器。
特点:服务端并不知道真正的客户端是谁。
-
反向代理:请求从互联网发出,先进入代理服务器,再转发给局域网内的服务器。
特点:客户端并不知道真正的服务端是谁。
区别:正向代理的对象是客户端。反向代理的对象是服务端。
-