1.1http概述
默认端口是80
HTTP超文本传输协议: 数据请求与响应
传输:网站的数据如何传递给用户.
超文本:文本,图片,视频....
用户打开网站后:网站如何传递数据给用户.
专业名字:数据请求与响应
请求request:打开网站,访问网站.
响应response:网站显示出,返回给你想要的内容
1.2http协议版本
| 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( QUIC ) 流媒体直播在使用.
HTTP1.1 vs 2.0 速度对比: HTTP1.1 vs 2.0 速度对比
1.3http协议状态码
状态码 | 含义 |
---|
2xx | 表示正常 |
3xx | 表示需要进行跳转,表示正常 |
4xx | 表示异常,客户端问题 |
5xx | 表示异常,服务端问题 |
详细的状态码 | 说明 |
---|
200 ok | 访问正常 |
301 Moved Permanently | 永久跳转 |
302 Found或Moved Temporarily | 临时跳转 |
304 Not Modified | 浏览器缓存 |
403 Forbidden | 权限拒绝(拒绝访问) 🅰 权限问题,🅱 首页文件问题 |
404 Not Found | 文件找不到,一般辅助错误日志排查 |
500 Internal Error | 内部错误,SElinux开启,其他原因一般辅助错误日志排查 |
502 Bad Gateway | 网关错误,一般发生在负载中(类似场景下),请求发送到后面,后面无人处理,提示502. |
503 service temporarily unavailable | 服务临时不可用,后端负载异常等情况,人为设置(升级) |
504 Gateway Time-out | 网关超时. |
2.衡量系统访问量指标
2.1概述
指标 | 说明 |
---|
IP | 访问网站的独立ip数量,公网ip |
PV | 页面访问量Page view |
UV | 独立访客数量,接近于用户数量 Unique Vistor |
| |
DAU | 每天的活跃用户的数量:日活(日活跃用户) |
MAU | 月活(月活跃用户) |
2.2统计
IP,PV,UV 三剑客进行过滤,第三方统计插件(百度统计,.....网站页面加入代码),ELK
DAU,MAU 第3方工具,数据库统计用户登录情况.、
https://alexa.chinaz.com/
3.Nginx
3.1web服务
WEB服务:网站服务,部署并启动了这个服务,你就可以搭建一个网站.
WEB中间件: 等同于WEB服务
中间件:范围更加广泛,指的负载均衡之后的服务.
数据库中间件:数据库缓存,消息对列ՎՎ
3.2常见网站服务
网站服务 | | 官网 |
---|
Nginx | 大部分使用nginx,Engine X | http://nginx.org/en/docs/ |
Tengine | 基于Nginx二开,淘宝开源,更多内置模块 | |
Openresty | 基于Nginx二开,加强Lua功能与模块 | |
...... | | |
Tomcat/Jboss/Jetty/Weblogic | 运行java环境的,web服务 | |
PHP | 运行php环境,需要ngx(LNMP) | |
...... | | |
3.3部署与使用
3.3.1配置yum源
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
3.3.2检查安装
[root@web01 ~]# rpm -qa nginx
nginx-1.22.0-1.el7.ngx.x86_64
[root@web01 ~]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/mime.types
/etc/nginx/modules
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/checkreload
/usr/libexec/initscripts/legacyactions/nginx/upgrade
/usr/sbin/nginx
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.22.0
/usr/share/doc/nginx-1.22.0/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx
3.3.3目录结构
温馨提示:
Nginx不同的安装方法:目录,文件会有所区别.
目录结构 | 说明 |
---|
/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日志: 访问日志,错误日志 ,跳转日志 |
其他目录和文件 | 说明 |
---|
/etc/logrotate.d/nginx | 日志切割(防止文件过大) |
/etc/nginx/mime.types | 媒体类型 |
/etc/nginx/fastcgi_params | ngx+php |
/etc/nginx/uwsgi_params | ngx+python |
/usr/lib/systemd/system/nginx.service | systemctl配置文件 |
/var/cache/nginx/ | 缓存目录 |
3.3.4日常启动与管理
systemctl enable nginx
systemctl start nginx
检查端口与进程
#检查服务状态
systemctl status nginx
#检查端口
ss -lntup |grep 80
#检查进程
ps -ef |grep nginx
4.Nginx核心功能详解
4.1配置文件
/etc/nginx/nginx.conf
4.2主配置文件详解

熟练掌握的指令:
include 文件包含,引用其他地方的ngx配置文件.
user指定ngx用户.
error_log错误日志
access_log 访问日志
网站中常用必会指令 | 说明 |
---|
listen | 指定监听端口 |
server_name | 指定域名,多个通过空格分割 |
location(区域) | 匹配请求中的uri(资源地址) |
root | 指定站点目录(网站的根目录) |
index | 指定站点的首页文件. 用户访问的时候不加上任何的文件,展示首页文件 |
error_log | 指定错误状态码与对应的错误页面. |
4.3Nginx处理用户请求流程
使用域名访问网站流程:
1.DNS解析:域名-地址
2.连接80端口: tcp3次握手与网站的80端口建立连接
3.http请求豹纹:请求方法,URI,HOST等信息
GET /index.html
HOST: cxk.dxxxxx.cn
User-Agent: Chrome/xxx
4.ngx处理:
http请求,http区域处理
不同的server{} 区域(子配置文件)处理.
端口
域名:用户请求的域名与子配置文件server_name进行匹配.
匹配成功,就让对应的子配置文件(server{})处理
根据子配置文件的,root,location规则,index进行处理查找文件.
把找到的文件发回给用户
5.http响应豹纹
状态码:200 ok
server信息
其他信息
文件内容
6.客户收到文件内容,浏览器解析,进行展示

4.4虚拟主机
虚拟主机:相当于是1个网站,在ngx中通过server{}区域实现.
ngx中虚拟主机有不同的类型(配置不同)
虚拟主机的分类 | 说明 | 应用场景 |
---|
基于域名的虚拟主机 | 不同域名访问不同的站点. | 生产环境最常用的 |
基于端口的虚拟主机 | 不同端口访问不同的站点. | 保护,设置特殊端口.1024以上 8888 18888 |
基于ip的虚拟主机 | 不同ip访问不同的站点. | 保护,用户只能通过某个ip连接进来.用来限制网站只能通过指定的ip进行访问内网ip,vpn ip. |
4.4.1基于域名的虚拟主机
不同域名访问不同的主机.
书写配置
server {
listen 80;
server name bird.oldboylinux.cn;
root /app/code/bird
location / {
index index.html;
}
}
#1.测试不创建站点目录
curl -H Host:bird.oldboylinux.cn http://10.0.0.7
提示404
#2.测试创建站点目录,但是没有首页文件
mkdir -p /app/code/bird/
curl -H Host:bird.oldboylinux.cn http://10.0.0.7
提示403
#3. 测试创建首页文件后访问
echo bird.oldboylinux.cn >/app/code/bird/index.html
curl -H Host:bird.oldboylinux.cn http://10.0.0.7
本地测试域名的小技巧(linux)
curl -v -H "Host: cxk.oldboylinux.cn" http://10.0.0.7/index.html
-H修改请求头里面的内容.
4.4.2基于端口的虚拟主机
不同的端口访问不的网站.
修改live.oldboylinux.cn端口为81.
erver {
listen 81;
server_name live.oldboylinux.cn;
root /app/code/live;
location / {
index index.html;
}
}
访问
curl -H Host:live.oldboylinux.cn
http://10.0.0.7:81/index.html
浏览器
http://10.0.0.7:81/index.html
4.4.3基于ip的虚拟主机
搭建mimi网站,端口是8888,只能通过172.16.1.7内网访问.
[root@web01 /etc/nginx/conf.d]# mkdir -p
/app/code/mi/
[root@web01 /etc/nginx/conf.d]# echo mi.oldboylinux.cn >/app/code/mi/index.html
[root@web01 /etc/nginx/conf.d]#
[root@web01 /etc/nginx/conf.d]# curl -H Host:mi.oldboylinux.cn http://10.0.0.7:8888/
curl: (7) Failed connect to 10.0.0.7:8888;
Connection refused
[root@web01 /etc/nginx/conf.d]#
[root@web01 /etc/nginx/conf.d]# curl -H
Host:mi.oldboylinux.cn http:Վˌ172.16.1.7:8888/
mi.oldboylinux.cn
[root@web01 /etc/nginx/conf.d]# cat
mi.oldboylinux.cn.conf
server {
listen 172.16.1.7:8888;
server_name mi.oldboylinux.cn;
root /app/code/mi;
location / {
index index.html;
}
}
4.5nginx日志
4.5.1概述
日志 | 使用建议 | 定义 | 使用 |
---|
错误日志 | 发生故障的时候可以查看,4xx,5xx | 通过错误级别指定 | error_log |
访问日志 | 记录着用户什么时候访问网站哪些页面,客户端信息. | 通过log_format定义访问日志的格式 | access_log |
4.5.2错误日志
https://nginx.org/en/docs/
指定错误日志的位置和错误级别(日志级别).
错误日志级别;:左到右,越来越粗糙. 记录信息的详细程度.
debug, info, notice, warn, error, crit, alert, or
emerg.
error
notice
debug: 未来用于调试使用,短时间开启,网站访问量较大别开.
##生产建议
##给每个虚拟主机指定自己独立的错误日志.
error_log指令 |
---|
格式:error_log 文件名 错误日志级别; |
指令放在哪:main , http , mail , stream , server , location |
[root@web01 /etc/nginx/conf.d]# cat
cxk.oldboylinux.cn.conf
server {
listen 80;
server_name cxk.oldboylinux.cn;
error_log /var/log/nginx/cxk.oldboylinux.cnerror.log notice;
root /app/code/cxk;
location / {
index index.html;
}
}.
需要把nginx.conf里面的error_log注释.
4.5.3访问日志
辅助我们进行分析,网站访问量,ip,pv
更多ngx内置变量:http://nginx.org/en/docs/varindex.html
log_format指定访问日志的格式 |
---|
log_format 格式名字 格式.....; |
放在哪里: http |
Ngx访问日志格式(ngx内置变量) | 说明 |
---|
$remote_addr | 客户端ip地址 |
$remote_user | 用户名(空,进行认证用户) |
$time_local | 时间 30/Aug/2022:14:44:27 +0800 |
$request | 请求报文的起始行(请求方法 URI HTTP/1.1) |
$status | http状态码 |
$body_bytes_sent | 响应给客户的文件的大小,响应报文的主体大小(文件大小) 单位字节 |
$http_referer | 从哪里跳转,访问到这个网站的. 网站运营分析 |
$http_user_agent | 客户端代理(浏览器) |
$http_x_forwarded_for | XFF头,负载中使用,记录用户真实的ip地址 |

[root@web01 /etc/nginx/conf.d]# cat
cxk.oldboylinux.cn.conf
server {
listen 80;
server_name cxk.oldboylinux.cn;
error_log /var/log/nginx/cxk.oldboylinux.cnerror.log notice;
access_log /var/log/nginx/cxk.oldboylinux.cnaccess.log main;
root /app/code/cxk;
location / {
index index.html;
}
}
需要把nginx.conf里面的access_log注释.
4.6location规则
4.6.1location概述
ngx的location规则:
在ngx用于匹配用户请求中的uri.ngx对用户请求中的uri进行判断.
如果用户请求的uri是xxxx,则做xxxx.
URI vs URL
URL网址 https://nginx.org/en/docs/
URI: /en/docs/
http://www.baidu.com/lidao/lidao.avi
URI: /lidao/lidao.avi 域名后面的内容
URL: http://www.baidu.com/lidao/lidao.avi 网址
http://www.baidu.com
URI: / 域名后面的内容
URL: http://www.baidu.com 网址
4.6.2location案例**,**搭建大型直播购物网站
域名:buy.oldboylinux.cn
站点目录:/app/code/buy/ 首页文件index.html
后台管理页面:/app/code/buy/admin/index.html
要求后台只能内网访问:172.16.1.0/24网段.
[root@web01 /etc/nginx/conf.d]# cat
buy.oldboylinux.cn.conf
server {
listen 80;
server_name buy.oldboylinux.cn;
root /app/code/buy;
location / {
index index.html;
}
#buy.oldboylinux.cn/admin/
#uri: /admin/
location /admin/ {
#准许172.16.1.0/24网段访问
allow 172.16.1.0/24;
#拒绝所有
deny all;
}
}
4.6.3搭建bird小鸟飞飞网站
基本配置浏览器访问并没有缓存
[root@web01 ~]# cat
/etc/nginx/conf.d/bird.oldboylinux.cn.conf
server {
listen 80;
server_name bird.oldboylinux.cn;
root /app/code/bird;
location / {
index index.html;
}
}
设置浏览器缓存功能
[root@web01 /app/code/bird]# cat
/etc/nginx/conf.d/bird.oldboylinux.cn.conf
server {
listen 80;
server_name bird.oldboylinux.cn;
root /app/code/bird;
location / {
index index.html;
}
#uri包含 .html或.js或.css 缓存1天
location ~* \.(html|js|css)$ {
expires max;
#expires 1d;
}
#uri包含 .jpg 或 .jpeg 或 .png 或 .gif 或 .bmp
location ~* \.(jpg|jpeg|png|gif|bmp)$ {
expires 1h;
}
4.6.4location规则详情
location规则 | 说明 |
---|
location / {xxxx} | 默认规则,保底,location规则在进行匹配的时候,其他的规则都匹配失败了,这时候匹配默认的规则 |
location /image/ {} | 用于匹配请求的uri (路径) cxk.oldboylinux.cn/image/lidao.txt |
location ~ \. (jpg | jpeg)$ {} | 支持正则,区分大小写 cxk.oldboylinux.cn/lidao/lidao.jpg |
location ~* \. (jpg|jpeg)$ {} | 支持正则,不区分大小写 cxk.oldboylinux.cn/lidao/lidao.jpg |
location ^~ /lidao/ | 不支持正则,仅仅匹配普通字符,很少使用,优先. |
location = /50x.html | 不支持正则,精确匹配,使用较少. |
location @名字 {} | 命名的location一般用于return/error_log 跳转. |
5.搭建一个高清视频下载网站
5.1搭建要求
名字: 一个高清视频下载站。
网站初衷: 做1个人人看得起的大片网站。
目录结构(目标)
要求
1. 浏览器打开后,显示目录结构(如上图)。
2. 增加svip功能。
3. 增加统计功能,统计nginx服务的状态,访问情况。

5.2下载站基本要求
自动索引功能(列表站点目录的内容),首页文件不存在.
autoindex模块
autoindex模块 |
---|
autoindex on ; 开启目录索引功能(显示站点目录下的文件的列表,首页文件不存在.) |
autoindex_localtime on; 显示本地时间 |
autoindex_exact_size off; 是否显示精确的文件的大小. off表示以人类可读形式显示大小 |
[root@web01 /app/code/dl]# cat
/etc/nginx/conf.d/v.oldboylinux.cn.conf
server {
listen 80;
server_name v.oldboylinux.cn;
root /app/code/v;
error_log /var/log/nginx/v-error.log notice;
access_log /var/log/nginx/v-access.log main;
charset utf8;
autoindex on;
autoindex_localtime on;
autoindex_exact_size off;
location / {
index index.html;
}
}
5.3增加vip认证功能
增加一个svip目录,里面创建文件.
增加认证功能(用户名和密码).
auth_basic模块
auth_basic "请输入密码:"; #输出提示,根据不同浏览器,可能不显示.
auth_basic_user_file conf/htpasswd; #指定用户名,密码文件
yum install -y httpd-tools
#创建文件
htpasswd -bc /etc/nginx/user lidao996 1
#增加用户
htpasswd -b /etc/nginx/user oldboy 1
#修改权限
chmod 600 /etc/nginx/user
chown nginx.nginx /etc/nginx/user
server {
listen 80;
server_name v.oldboylinux.cn;
root /app/code/dl;
error_log /var/log/nginx/dl-error.log notice;
access_log /var/log/nginx/dl-access.log main;
charset utf8;
autoindex on;
autoindex_localtime on;
autoindex_exact_size off;
location / {
index index.html;
}
location /svip/ {
auth_basic "input password:";
auth_basic_user_file /etc/nginx/user;
}}
5.4增加统计功能
显示ngx当前状态(显示ngx状态信息),未来用于监控ngx.
熟练使用状态模块
stub_status模块/指令,显示nginx服务的状态,用户访问的状态.
location /status {
stub_status;
}
ab 压力测试功能
ab -n 9999999 -c 3 -H Host:v.oldboylinux.cn
http:Վˌ10.0.0.7/