nginx和gunicorn相关,反向代理和正向代理区别,静态资源和动态资源

nginx官网:http://nginx.org/
nginx github:https://github.com/nginx/nginx

反向代理和正向代理区别:https://www.cnblogs.com/taostaryu/p/10547132.html

反向代理和正向代理区别

nginx和gunicorn相关,反向代理和正向代理区别,静态资源和动态资源_第1张图片
nginx和gunicorn相关,反向代理和正向代理区别,静态资源和动态资源_第2张图片

Gunicorn

Gunicorn 是一个 Python 的 WSGI HTTP 服务器。它所在的位置通常是在反向代理(如 Nginx)或者 负载均衡(如 AWS ELB)和一个 web 应用(比如 Django 或者 Flask)之间。它是一个移植自Ruby的Unicorn项目的pre-fork worker模型,即支持eventlet也支持greenlet。
nginx和gunicorn相关,反向代理和正向代理区别,静态资源和动态资源_第3张图片

nginx和gunicorn相关,反向代理和正向代理区别,静态资源和动态资源_第4张图片
nginx + gunicorn,是利用nginx高并发的优势,nginx收到http请求之后,把他转发给wsgi服务器gunicorn,gunicorn上运行flask应用,处理请求之后再返回给nginx,而gunicorn擅长于管理多进程,一般用来管理多个进程,有进程挂了Gunicorn可以把它拉起来,防止服务器长时间停止服务,还可以动态调整 worker的数量,请求多的时候增加 worker 的数量,请求少的时候减少,这就是所谓的 pre-fork 模型。

Django,Nginx 和 Gunicorn 的关系

参考:https://www.jianshu.com/p/c85a7604ae61
客户端发来 http 请求,Nginx 作为直接对外的服务器接口,对 http 请求进行分析
如果是静态资源请求,则由Nginx自己处理(效率极高)
如果是动态资源请求,则把它转发给 Gunicorn
Gunicorn 对请求进行预处理后,转发给 Django,最终完成资源的返回
如果用餐馆来做比喻的话,Nginx 就是迎宾小姐,客人如果点了酒水,迎宾小姐自己就帮忙拿了;而 Gunicorn 是传菜员,Django 是厨师,他两一起满足客人对现炒美食的需求。

这个比喻具体是在说什么呢?

首先,我们要分清楚Web应用和Web服务器这两个概念。Django开发出来的程序是Web应用,它本身不能起到监听用户请求并响应这种 “收发员” 的功能。监听用户请求并响应是Web服务器的职责。

Nginx就是一个Web服务器。即使没有web应用运行,只有一大堆 html 静态页面,我们也可以通过配置路由和返回的页面来使用Nginx搞出一个静态网站。

Django开发的Web应用本身是没有和客户端(浏览器)交互的功能的。我们在本地能够运行它是只是因为Django其内置了一个小型Web服务器而已,不过它性能受限,不能用于生产环境。

那么将Nginx和Django组合是不是就大功告吉了呢?没那么简单。Python官方定义了WSGI(Web Server Gateway Interface)作为Web服务器与Python Web应用程序或框架之间的建议标准接口。这样可以提高Web应用程序和服务器之间的可移植性。显然Django需要一个实现WSGI的服务器来和它配合。然而Nginx作为一个普通的http服务器,并没有实现这个接口

静态文件和动态文件

直接把相应文件发送到客户端的文件都是静态资源。
如果不同的用户可以得到不同的回答,是动态资源,一般是指数据库资源。

静态文件和动态文件
1.文件存放在块设备(磁盘)的文件系统中的文件中,我们称之为静态文件。文件存放在内存中,我们称之为动态文件。

2.当程序open一个文件时linux内核会做以下操作:首先内核会建立一个打开文件的数据结构(包含文件描述符,节点信息等),记录我们打开的文件。然后会向内存申请一段内存,并且将静态文件里面的内容从块设备读取到内核中特定地址管理存放。

3 当打开文件后,对文件进行读写操作,都是在内存中这一份动态文件进行操作,而不是针对静态文件。此时修改动态文件的内容,并不会影响静态文件里面的内容,两者是不同步的。当close文件时,close内部的内核会将动态文件里面的内容更新到块设备的静态文件中。

4 为什么要这样设计?不直接对块设备进行操作?
因为块设备的读写速度相对内存慢,是按块为单位进行操作,不灵活。而内存是按字节为单位进行操作的,而且可以随机操作,很灵活。

静态资源和动态资源的区别,Web服务器种?

静态一般是后缀为:html 动态后缀一般为:asp、aspx、php、jsp等 动态可以进行逻辑计算,比如判断你是否登录,而静态不行。

网站当中动态页面和静态页面有何区别,为什么说?

如果客户端请求的是静态资源(.htm或者是.htm),则将请求直接转交给WEB服务器,之后WEB服务器从文件系统中取出内容,发送回客户端浏览器进行解析执行。

如果客户端请求的是动态资源(.jsp、.asp/.aspx、.php),则先将请求转交给WEB Container(WEB容器),在WEB Container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。

web应用中的动态资源和静态资源分别指什么?

直接把相应文件发送到客户端的文件都是静态资源。如果不同的用户可以得到不同的回答,是动态资源,一般是指数据库资源。

当我们进行软件开发时,要先确定软件架构

C/S架构:Client/Server 客户端/服务器端
B/S架构:Browser/Server 浏览器/服务器端
我们用java语言开发互联网项目使用B/S架构,浏览器向服务器端请求资源
nginx和gunicorn相关,反向代理和正向代理区别,静态资源和动态资源_第5张图片

静态资源:使用静态网页开发技术(HTML、CSS、JavaScript)发布的资源

特点:所有用户访问,得到的结果一样
如果用户请求的是静态资源,那么服务器会直接将静态资源发送给浏览器,浏览器中内置了静态资源的解析引擎,可以解析静态资源(浏览器只能解析静态资源!)。因为每个浏览器的解析引擎可能不一样,所以相同的网页可能在不同浏览器展示有所区别。
HTML:搭建基础网页,展示页面的内容
CSS:布局美化页面
JavaScript:控制页面元素,让页面有动态效果

动态资源:使用动态网页开发技术(jsp/servlet,php,asp…)发布的资源

特点:所有用户访问,得到的结果可能不一样
如果用户请求的是动态资源,那么服务器会执行动态资源,转换为静态资源,再发送给浏览器(浏览器无法解析动态资源!)
要学习动态资源,需要先学习静态资源。

静态资源:

我的理解是前端的固定页面,这里面包含HTML、CSS、JS、图片等等,不需要查数据库也不需要程序处理,直接就能够显示的页面。
具体形式为:客户端发送请求到web服务器,web服务器拿到对应的文件,返回给客户端,客户端解析并渲染出来。

动态资源:

需要程序处理或者从数据库中读数据,能根据不同的条件在页面显示不同的数据,优点是内容更新不需要修改页面,缺点是访问速度不及静态页面。
具体形式为:客户端请求的动态资源,先把请求交给web的一个存储点,web存储点连接数据库,数据库处理数据之后,将数据交给web服务器,web服务器返回给客户端解析渲染处理。

区别:

1、静态资源一般都是设计好的html页面,而动态资源依靠设计好的程序来实现按照需求的动态响应或者从数据库中读数据;
2、静态资源的交互性差,不好更改,而动态资源可以根据需求获取内容;
3、在服务器的运行状态不同,静态资源不需要与数据库参于程序处理,动态资源需要一个或多个数据库的参与运算。

你可能感兴趣的:(术语,笔记,nginx,运维,服务器)