一、HTTP协议
1.1、HTTP概述
-
默认端口是80
-
HTTP超文本传输协议: 数据请求与响应.
- 传输:网站的数据如何传递给用户.
- 超文本:文本,图片,视频....
- 用户打开网站后:网站如何传递数据给用户.
- 专业名字:数据请求与响应.
请求request:打开网站,访问网站.
响应response:网站显示出,返回给你想要的内容.
案例01: 通过curl或wget访问网站并显示详细过程,能够找出哪部分是请求和响应.
yaml
[root@nanjing ~]# curl -v www.baidu.com
[root@nanjing ~]# wget --debug www.baidu.com
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.14 (linux-gnu)
Accept: */*
Host: www.baidu.com
Connection: Keep-Alive
---request end---
已发出 HTTP 请求,正在等待回应...
---response begin---
HTTP/1.1 200 OK
Content-Length: 2381
Content-Type: text/html
Server: bfe
Date: Sat, 02 Mar 2024 08:53:58 GMT
---response end---
200 OK
Registered socket 3 for persistent reuse.
长度:2381 (2.3K) [text/html]
正在保存至: "index.html"
1.2、HTTP协议版本
http1.0 | http1.1 | http2.0 | http3.0 | |
---|---|---|---|---|
特点 | 短连接,每次请求都需要重复建立断开连接 | 加入长连接功能 | 增加并发,访问更快 | 基于udp更快,应用于流媒体 |
占用服务端资源 | keepalive功能(网站响应后不会立刻断开,保留下这个连接) | |||
是否加密 | http 不加密的https 加密的 | 默认基于https | ||
基于tcp/udp | Tcp | Tcp | Tcp | Udp |
目前现状: 大部分企业还在使用http1.1; 一部分使用http2.0; 目前http3.0流媒体直播在使用.
HTTP1.1 vs 2.0 速度对比: HTTP1.1 vs 2.0 速度对比
1.3、HTTP协议详解
1)HTTP请求
请求方法:用于指定客户端如何访问服务端(下载,上传,查看服务端信息)
常见的请求方法 | 说明 |
---|---|
GET | 下载(大部分请求) |
POST | 上传(上传文件内容,登录) |
HEAD | 类似于GET,仅仅输出响应的头部信息,(查看服务端的信息,一般用于检查) |
资源的位置(URI): 这个资源在网站站点目录的哪个地方,叫什么名字.
URI(统一资源标识符) :站点目录是用于存放网站代码的地方.未来在nginx中我们可以指定与查看.
案例02: 测试www.baidu.com是否可以通过http访问
bash
curl -I www.baidu.com
#发出HEAD请求方法,查看服务端信息,服务端是否可以访问.
温馨提示: GET /lidaoav.mp4 HTTP/1.1 这里的/不是根,是网站站点目录,未来可以在web服务中进行配置.
/app/code/www/
站点目录 访问/lidaoav.mp4=/app/code/www/lidaoav.mp4
请求头
字段(一些关键词) | 含义 |
---|---|
User-Agent | 客户端代理(用什么工具访问网站),浏览器 |
Host | 表示访问的目标网站:域名或ip |
...... |
2)HTTP响应
响应头字段 | |
---|---|
Server | 显示服务端使用的web服务器及版本 |
Content-Type | 媒体类型(文件类型) |
Content-Length | 大小 |
Location | 跳转之后的新的位置(未来讲解rewrite 301/302),跳转的时候才有 |
HTTP状态码(服务端给客户端)
状态码 | 含义 |
---|---|
2xx | 表示正常 |
3xx | 表示需要进行跳转,表示正常 |
4xx | 表示异常,客户端问题 |
5xx | 表示异常,服务端问题 |
更多案例:查看文档
301案例:京东域名的永久跳转
二、衡量系统访问量指标
指标 | 说明 |
---|---|
IP | 访问网站的独立ip数量,公网ip |
PV | 页面访问量 |
UV | 独立访客数量,接近于用户数量 Uniqve vistor |
DAU | 每天的活跃用户的数量:日活(日活跃用户) |
MAU | 月活(月活跃用户) |
IP,PV,UV 三剑客进行过滤,第三方统计插件(百度统计,.....网站页面加入代码),ELK
DAU,MAU 第3方工具,数据库统计用户登录情况.
网站活跃度:排名信息
三、Nginx
WEB服务:网站服务,部署并启动了这个服务,你就可以搭建一个网站.
WEB中间件: 等同于WEB服务
中间件:范围更加广泛,指的负载均衡之后的服务.
数据库中间件:数据库缓存,消息对列
3.1、常见网站服务
网站服务 | 说明 | 官网 |
---|---|---|
Nginx | 人部分使用nginx,Engine X | www.nginx.org/en/docs/ |
Tengine | 基于Nginx二开,淘宝开源,更多内置模块 | |
0penresty | 基于Nginx二开,加强Lva功能与模块 | |
Tomcat/Jboss/Jetty/Weblogic | 运行java环境的,web服务 | |
PHP | 运行php环境,需要ngx(LNMP) |
3.2、目录结构
/etc/nginx | nginx各种配置目录 |
/etc/nginx/nginx.conf | 主配置文件 |
/etc/nginx/conf.d | 子配置文件(网站) |
/etc/nginx/conf.d/default.conf | 默认的子配置文件 |
/usr/sbin/nginx | ngx命令 |
/usr/share/nginx/html/ | ngx默认的站点目录。网站的根目录 |
/var/log/nginx/ | ngx日志:访问日志,错误日志,跳转日志 |
3.3、配置yum源
创建 Yum 软件源文件 :在 /etc/yum.repos.d/
目录下创建一个新的 .repo
文件,以您喜欢的名称命名,比如 nginx.repo
。
ini
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
3.4、刷新缓存并安装
yum makecache
yum install nginx
3.5、日常启动和管理
bash
systemctl enable nginx
systemctl start nginx
#检查服务状态
systemctl status nginx
#检查端口
ss -lntup | grep 80
#检查进程
ps -ef lgrep nginx
3.6、主配置文件详情
3.7、子配置文件详情
网站中常用必会指令 | 说明 |
---|---|
listen | 指定监听端口 |
server name | 指定域名,多个通过空格分割 |
Location(区域) | 匹配请求中的uri(资源地址) |
root | 指定站点目录(网站的根目录) |
index | 指定站点的首页文件。 用户访问的时候不加上任何的文件,展示首页文件 |
error_log | 指定错误状态码与对应的错误页面 |