有太多的文章告诉我们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以及其后面的东西。

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

转自:http://blog.csdn.net/u014761344/article/details/40146597

最新文章

  1. web前端开发最佳实践笔记
  2. google应用商店的解决
  3. APP发布Xcode7
  4. 【Linux C中文函数手册】之 目录操作函数
  5. Sina App Engine(SAE)教程(11)- Yaf使用
  6. [HDOJ4027]Can you answer these queries?(线段树,特殊成段更新,成段查询)
  7. sql优化-总结
  8. Linux Shell 之 我的第一个Shell程序
  9. 杭电OJ--自行车计速器
  10. get 和 post请求的区别
  11. ThreadLocal及InheritableThreadLocal的原理剖析
  12. Golang 入门系列(五)GO语言中的面向对象
  13. 利用api模拟百度搜索功能
  14. django基础 -- 3. urls.py view.py 参数 别名 重定向 常用方法 静态文件
  15. 简明Python教程 ~ 随书笔记
  16. python基础-类的其他方法
  17. Spring-Boot整合freemarker引入静态资源css、js等
  18. noip | 题目 | noip数据 收集站 | noipdata
  19. mysql完全卸载
  20. orchestrator-Raft集群部署

热门文章

  1. Play框架--初学笔记
  2. Ajax增删改查-----------增
  3. 变相实现textarea文本域
  4. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息
  5. [转] ES6展开运算符
  6. ssh登陆linux服务器 实际场景讲解 让你管理服务器更安全
  7. grails服务端口冲突解决办法-【grails】
  8. ELK使用2-Kibana使用
  9. BZOJ3796 Mushroom追妹纸 字符串 SA KMP
  10. 数仓1.1 分层| ODS& DWD层