有太多的文章告诉我们nginx uwsgi django 这些东西怎么用了,太多的人知道这些东西的怎么使用,怎么配置,怎么优化,但是还是有一部分人比如我这种水货不知道这些东西到底是啥,为啥一个项目的发布要经过这么多层级,他们每一层都做了什么,都是必须的吗

1 首先nginx 是对外的服务接口,外部浏览器通过url访问nginx,

2nginx 接收到浏览器发送过来的http请求,将包进行解析,分析url,如果是静态文件请求就直接访问用户给nginx配置的静态文件目录,直接返回用户请求的静态文件,

如果不是静态文件,而是一个动态的请求,那么nginx就将请求转发给uwsgi,uwsgi 接收到请求之后将包进行处理,处理成wsgi可以接受的格式,并发给wsgi,wsgi 根据请求调用应用程序的某个文件,某个文件的某个函数,最后处理完将返回值再次交给wsgi,wsgi将返回值进行打包,打包成uwsgi能够接收的格式,uwsgi接收wsgi 发送的请求,并转发给nginx,nginx最终将返回值返回给浏览器。

3要知道第一级的nginx并不是必须的,uwsgi完全可以完成整个的和浏览器交互的流程,但是要考虑到某些情况

1 安全问题,程序不能直接被浏览器访问到,而是通过nginx,nginx只开放某个接口,uwsgi本身是内网接口,这样运维人员在nginx上加上安全性的限制,可以达到保护程序的作用。

2负载均衡问题,一个uwsgi很可能不够用,即使开了多个work也是不行,毕竟一台机器的cpu和内存都是有限的,有了nginx做代理,一个nginx可以代理多台uwsgi完成uwsgi的负载均衡。

3静态文件问题,用django或是uwsgi这种东西来负责静态文件的处理是很浪费的行为,而且他们本身对文件的处理也不如nginx好,所以整个静态文件的处理都直接由nginx完成,静态文件的访问完全不去经过uwsgi以及其后面的东西。

这就是这几者之间的关系。

最新文章

  1. js url.slice(star,end) url.lastIndexOf('/') + 1, -4
  2. windows消息钩子注册底层机制浅析
  3. queen8
  4. 【codeforces 733F】 Drivers Dissatisfaction
  5. EasyUi – 2.布局Layout + 3.登录界面
  6. 移动web在ios和android下点击元素出现阴影问题
  7. sphinx续4-coreseek的工作原理
  8. CSS3------background-size(背景图片尺寸属性)
  9. linux环境下的线程的创建问题
  10. [UWP]附加属性2:实现一个Canvas
  11. easyui datagrid属性和方法
  12. Android缓存机制——LruCache
  13. git 原理
  14. openssl升级
  15. KVM改NAT为Bridge
  16. git的那些事
  17. laravel 多个项目共享SESSION
  18. P1501 [国家集训队]Tree II(LCT)
  19. Hadoop概念学习系列之再谈hadoop集群里的本地模式、伪分布模式和全分布模式(三十七)
  20. 软件项目第一次sprint评分表

热门文章

  1. 【BZOJ3060】[Poi2012]Tour de Byteotia 并查集
  2. POJ 2965 The Pilots Brothers' refrigerator【枚举+dfs】
  3. 我的Android进阶之旅------>Android之动画之Frame Animation实例
  4. Linux显示网络相关信息
  5. Tensorflow 初级教程(一)
  6. KinedEditor特性
  7. Kattis - fairdivision 【贪心】
  8. hihocoder 第五十二周 高斯消元·二【高斯消元解异或方程 难点【模板】】
  9. RabbitMQ事务确认机制(生产者)
  10. Exception in thread "main" java.io.IOException: Mkdirs failed to create /var/folders/q0/1wg8sw1x0dg08cmm5m59sy8r0000gn/T/hadoop-unjar6090005653875084137/META-INF/license at org.apache.hadoop.util.Run