NodeJS准备

安利工具ngrok  内网穿透工具

一、网络基础知识:

一个HTTP请求的完整过程。基于chrome。

一个请求实际上是两次请求1.Head请求,服务器给个response

2.真正的请求:Get、Post、Put、Delete

Get不带Body信息,传url——HTTP header里边method:Get/Post.....(字段获取)

Post 带Body,post 会建立多条数据,不幂等

Put是幂等的,put几次,得的数据不变(字段更新)

Delete

3. www.uskid.com/a/p.png  请求包括req.header  req.body  res.header res.body

先判断走缓存还是server,判断没有就发送server真正的请求。

缓存首先是去本地浏览器的缓存去找这个资源,拿到了,返回304

浏览器认为有,去缓存中没有拿到 。报另外一个错。

给server发请求,进入网络,发Head,问我的地址存不存在。解析域名。先去host找,再去本地局域网内的交换机和路由器中找。再去网络供应商所在的节点配置DNS(白名单,黑名单),再往下到联通移动等供应商的DNS解析(白名单、黑名单),到服务提供商,比如阿里云或者亚马逊,找到IP地址。

组建request请求 header里有发起者的IP-origin信息,有host信息,route信息,cookie信息, auth信息,x-uskid信息, coutent-type等等。

cookie是浏览器自动去拿的信息。它是被缓存到浏览器本地,domain信息 里边又uskid.com。t.uskid.com  等等。第一项找完全匹配的,第二优先级找部分匹配的*.uskid.com 这种,其他都屏蔽了。

Auth记录当前访问者的权限信息。Oauth协议,通常用oauth协议2.用于利用QQ或微信号登录这种。

x-USKid可以放Token信息。放公共信息。

Content-type 声明我的Body长度或类型的。

Body包括body param query等等 Content-type声明json,也可以在Body里放json,但会消耗内存。

query  : ?gender=boy&age=10  (最准确详细)

param : 别名 users/:id           /Users/boy(只返回boy的id和名字,定制化)

Body:一般不做get,改东西的时候用。更新的内容都放到Body里边。

https端口默认443,http默认80。默认会隐藏。

服务器返回,res阶段。服务器写什么,都到res里。Head:设置res.setcookie,是服务器往浏览器cookie里写东西。Body:status 30x 做重定向指令,html资源,json字串等 下载的时候,服务端返回一个文件流,文件流也有Content-type,拿到操作系统默认的路径开始传输,然后触发打开或保存操作。

问题 Content-type属性的影响

req: “content-type :json”,浏览器把它解析成json。 “content-type :text” 解析成“xxxx文字”

multify-part 文件流 file,length等信息。

res:Content-type文件流,bmp:0100001(描述一个图片二维码),浏览器就能展示这个二维码。

二、代理和反向代理

1.代理:在网络中代发代做的作用。

三 nginx 反向代理

1. 服务器不用直接暴露给用户,服务器可能有多个网卡。

计算机对端口的权限和安全等级不一样,除了80端口外其他端口都不能对服务器造成致命的威胁。NGINX不在集群内部,多台NGINX,用来保护服务器。Nginx只能访问server1的8001和server2的9003端口,接到不同的请求访问不同的地址。而server1和server2可以没有外网网卡等等,安全升级。NGINX10.10.10.10 ,url180 url2 443 url3 通过NGINX访问server1 2 3 

四 IIS

IIS配置在服务器上,IIS假如是10.10.10.11   url 80 通过IIS 发送给自己的app

IIS的管道模型: IIS加载Java组件后,能处理Java请求, 请求来了,IIS知道你要访问那个application,帮你创建context上下文,处理,最后response,返回给user。

nodejs是单线程的。

PM2 起了8个nodejs(或者镜像),PM2把请求分发在比较闲的nodejs上。

Docker 8个,暴露的都是8001端口,也可以起到分发作用。

我们再Docker里运行PM2.

Openshift。

你可能感兴趣的:(NodeJS准备)