负载均衡与共享主机
- 一个域名:多个IP(主机) --- 负载均衡
- 一个IP(主机 ): 多个域名 --- 共享主机
HTTP说明文档RFC2612中文版
http80端口https443端口
域名分类
- com是顶级域名
- xxx.com应当是二级域名,但是俗称叫一级域名
- www.xxx.com 应当是三级域名,但是俗称叫二级域名,与xxx.com为父子关系
- 例如:github.io是俗称的一级域名 但是某用户的username.github.io是俗称的二级域名也是github.io的子域名
www.baidu.com 与 baidu.com不是同一个域名
什么是URL
五大要素:协议,域名,页面路径,查询参数,锚点
CURL工具是什么
一个利用URL语法在命令行环境工作的文件传输工具,可以用于请求web服务器,与postman功能类似但是更强大
浏览器输入地址只是发请求的最最基本方式而已,无法对请求做任何的修改
锚点的内容不会发送给服务器只与本地浏览器相关
curl www.baidu.com 会发生什么
查询DNS服务器得到IP地址并连接这个服务器
然后告诉这个服务器我们要访问的host(域名)是www.baidu.com(一个IP可能存在多个域名,因此需要指明)
User-Agent: 用户代理,指的是你发请求所用的工具
这张图表明了响应头以及返回的内容
用nodejs构建一个简单的http服务器请求网页
本地运行过程:
- 把server.js clone到本地
node server.js:8888 //要指明端口号- 打开浏览器输入地址,观察network
- 为什么发起了两个请求?
- nodeJS代码中会返回一个html网页供浏览器解析
- 浏览器并不关心文件格式诸如.html/.css 这些,只关心返回的响应头怎么写的,若"Content-Type:text/html"则按照html语法解析
- 由于link了一个路径,则浏览器继续访问该/x路径,于是发现/x路径返回的是css文件,
- 下图为nodejs中检测到路径/x后是如何设置响应头与响应体的(respone.write用于写响应体)
- 同理,浏览器通过responseHeader知道这是css文件并解析
阿里云服务器运行过程: 具体看19th的简介
- 注册阿里云ECS
- 充值100元购买Ubuntu 64位服务器
- 基础配置之后运行服务器
- 配置ssh以远程登陆
- linux中创建账户
- 安装nodejs与git
- 部署应用
Request与Response基本格式
Request:
network可以查看到通过chrome发的http请求的原格式
Http Request包含以下三部分内容:
- Request Line
- Request Header
- Request Body (post请求方式才有)
以下是用Chrome浏览器发送的GET请求
以下是用CURL发送的POST请求
可以手动为Request Header添加内容
在客户端(chrome/curl)设置的请求头,可在服务器端查看
用curl手动添加:
curl -v -H 'Ryan:OK' http://localhost:8888/?wd=hi //-H 为RequestHeader增加内容
可以从服务器看到打印出的RequestHeader如下
Response:
下图演示了如何在chrome中查看response元数据与响应体内容(即返回的数据)
响应体内容在response tab页面中
可以手动为Response Header添加内容
在服务器端(nodejs)设置的响应头,可在客户端(chrome/curl)查看
response.setHeader('Ryan','GettingBetter') // 在nodeJS中设置响应头