运维教程WEB集群之二Nginx日志和Location
课程目标
-
掌握Nginx日志
-
Location规则
-
vip和统计功能
一、Nginx日志
1.概述
日志 | 使用建议 | 定义 | 使用 |
---|---|---|---|
错误日志 | 发生故障的时候可以查看 | 通过错误级别定义 | error_log |
访问日志 | 记录着用户什么时候访问,网站那些页面,客户端信息 | 通过log_format定义访问日志的格式 | access_log |
2.错误日志
指定错误日志的位置和错误级别(日志级别)
error_log指令 |
---|
格式:error_log 文件名 错误日志级别 |
指定放在哪里:main,http,mail,stream,server,location |
错误日志级别:从左到右,越来越粗糙 debug,info,notice,warn,error,crit,alert,emerg |
补充:
emerg:当系统不稳定时,用于紧急消息
alert:生成严重问题的警报消息。
crit:用于紧急情况下立即处理。
crit: Used for Critical issues for immediately dealing.
error:处理页面时,可能会发生错误。
warn:用于警告消息
notice:您也可以忽略的通知日志。
info:有关信息,消息
debug:指向用于调试信息的错误位置
#每个虚拟主机指定自己独立的错误日志
#先注释主配置文件的错误日志配置
[root@web01 /etc/nginx]# grep -n error nginx.conf
5:#error_log /var/log/nginx/error.log notice;
[root@web01 /etc/nginx/conf.d]# cat czk.com.conf
server{
listen 80;
server_name cxk.com;
root /app/code/cxk;
error_log /var/log/nginx/cxk.com-error.log notice; #配置错误日志
location /{
index index.html;
}
}
3.访问日志
log_format指定访问日志的格式 |
---|
log_format 格式名字 格式 |
放在哪里: http域 |
[root@web01 /etc/nginx/conf.d]# tail /var/log/nginx/access.log
192.168.174.7 - - [13/Aug/2024:17:13:06 +0800] "GET / HTTP/1.1" 200 11 "-" "curl/7.29.0" "-"
Nginx访问日志格式(nginx内置变量) | 说明 | |
$remote_addr |
客户端ip地址 | 192.168.174.7 |
$remote_user | 用户名(空,进行认证用户) | |
$time_local | 时间 | 09/Feb/2023:16:21:27 +0800 |
$request |
请求报文的起始行 | GET /admin/ HTTP/1.1 |
$status |
http状态码 | 403 |
$body_bytes_sent |
响应给客户的文件的大小, 响应报文的主体大小 单位字节 | 555 |
$http_referer | 从哪里跳转,访问到这个网站的 | http://buy.com/admin/ |
$http_user_agent |
客户端代理(浏览器) | Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 |
$http_x_forwarded_for | XFF开头,负载中用,记录用户真实ip | |
#日志格式的定义
[root@web01 /etc/nginx]# cat nginx.conf
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#注释主配置文件
[root@web01 /etc/nginx]# grep access nginx.conf
# access_log /var/log/nginx/access.log main;
#给每个用户指定自己独立的日志
[root@web01 /etc/nginx/conf.d]# cat czk.com.conf
server{
listen 80;
server_name cxk.com;
root /app/code/cxk;
error_log /var/log/nginx/cxk.com-error.log notice;
access_log /var/log/nginx/cxk.com-access.log main; #配置访问日志
location /{
index index.html;
}
}
#改完记得重启nginx服务
访问日志其他选项 | 说明 |
---|---|
访问日志进行压缩 | gzip需要通过zcat,zless,zgrep进行查看 |
进行缓存 | buffer=32k 先把日志写入到内存中,定期写入到磁盘 |
定义刷新时间 | flush=10s |
[root@web01 /etc/nginx/conf.d]# cat czk.com.conf
server{
listen 80;
server_name cxk.com;
root /app/code/cxk;
error_log /var/log/nginx/cxk.com-error.log notice;
access_log /var/log/nginx/cxk.com-access.gz main gzip buffer=32k flush=10s; #配置访问日志
location /{
index index.html;
}
}
nginx 的 access.log 中可以记录很多有价值的信息,通过分析 access log,可以收集到很多指标
1.制作nginx的日志切割,每天凌晨切割并压缩。
PV:PV(访问量): 即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。
UV:UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。20
独立IP:1
工作常用(面试题笔试):
1.根据访问IP统计UV
awk '{print $1}' access.log-20240814|sort | uniq -c |wc -l
2.统计访问URL统计PV
awk '{print $7}' access.log-20240814|wc -l
3.查询访问最频繁的URL
awk '{print $7}' access.log-20240814|sort | uniq -c |sort -n -k 1 -r|more
4.查询访问最频繁的IP
awk '{print $1}' access.log-20240814|sort | uniq -c |sort -n -k 1 -r|more
5.查询访问最频繁的前10的IP
awk '{print $1}' access.log-20240814|sort | uniq -c |sort -n -k 1 -r|head -n 10
当网站访问量上千万的时候,很厉害!!!!
二、Location规则
1.location概述
nginx的location规则:
-
在nginx用于匹配用户请求中的uri,nginx对用户请求中的uri进行判断
-
如果用户请求的uri是xxx,则做xxx
URI VS URL
URL: https://nginx.org/en/docs/
URI: /en/docs
2.搭建快手直播购物网站
域名:buy.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.com.conf
server{
listen 80;
server_name buy.com;
root /app/code/buy;
location /{
index index.html;
}
#/admin/
location /admin/{
allow 172.16.1.0/24;
deny all;
index index.html;
}
}
[root@web01 ~]# mkdir -p /app/code/buy/admin/
[root@web01 ~]# cat /app/code/buy/index.html
welcom to buy page!!!!
[root@web01 ~]# cat /app/code/buy/admin/index.html
welcom to admin !!!!
[root@web01 ~]# curl -H Host:buy.com http://172.16.1.7/admin/
welcom to admin !!!!
[root@web01 ~]# curl -H Host:buy.com http://10.0.0.7/admin/
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.22.1</center>
</body>
</html>
3.搭建bird小鸟飞飞网站
给网站加速,设置缓存,网站中html,js,css结尾的文件缓存1天
#案例06:搭建bird小鸟飞飞网站,给网站加速,设置缓存,网站中html,js,css结尾的文件缓存1天,图片缓存1小时.
[root@web01 ~]# cat /etc/nginx/conf.d/bird.com.conf
server{
listen 80;
server_name bird.com;
#将root提到外面,共享
root /app/code/bird;
#添加自定义的日志信息
error_log /var/log/nginx/bird.com-error.log notice;
access_log /var/log/nginx/bird.com-access.log main;
location / {
index index.html;
}
#规则只能是html,js,css;1m
location ~* \.(html|js|css)$ {
expires max;
#max最大,10年
}
#过期时间
location ~* \.(jpg|jpeg|png|gif|bmp)$ {
expires 1h;
}
}
4. location 规则小结
location规则 | 说明 |
---|---|
location / | 默认规则,保底,location规则在进行匹配的时候,其他的规则都匹配失败了,这时候匹配默认的规则⭐⭐ |
loaction /image/ {} | 用于匹配请求的uri⭐⭐ |
location ~ .(jpg|jpeg)$ {} | 支持正则,区分大小写 |
location ~* .(jpg|jpeg)$ {} | 支持正则,不区分大小写⭐⭐ |
location ^~ /image/ | 不支持正则,仅仅匹配普通字符,很少使用,优先匹配 |
location =/50x.html | 不支持正则,精确匹配 |
location @名字{} | 命名的location一般用于return /error_log跳转 |
location匹配的时候优先级
优先级 | 符号 |
---|---|
1 | = ⭐ |
2 | ^~ |
3 | ~ ~* ⭐ |
4 | /image/ ⭐ |
5 | / ⭐ |
总结
Nginx的日志和location规则是配置和管理服务器的重要部分。日志分为访问日志和错误日志,用于记录请求细节和错误信息,帮助监控和故障排查。Location指令通过精确匹配、前缀匹配和正则匹配等方式处理不同的URI请求,并按优先级顺序进行匹配。最后完成了飞翔的小鸟的案例。
- 点赞
- 收藏
- 关注作者
评论(0)