运维教程WEB集群之二Nginx日志和Location

举报
tea_year 发表于 2025/01/12 09:03:21 2025/01/12
【摘要】 课程目标掌握Nginx日志Location规则vip和统计功能LAMP一、Nginx日志1.概述日志使用建议定义使用错误日志发生故障的时候可以查看通过错误级别定义error_log访问日志记录着用户什么时候访问,网站那些页面,客户端信息通过log_format定义访问日志的格式access_log2.错误日志指定错误日志的位置和错误级别(日志级别)error_log指令格式:error_lo...

课程目标

  • 掌握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;
     }       
 }


image-20240813225440871.png




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;
     }
 } 

1238843-20230221215941015-899160196.png

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请求,并按优先级顺序进行匹配。最后完成了飞翔的小鸟的案例。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。