Web服务器-Nginx日志

xwbar的头像
2025-05-24 13:52:05
/
世界杯比赛赛程

我们上一大章介绍了Kubernetes的知识,本章节我们进入中间件的讲解,这里会包含很多不同的类型组件,中间件的第一个大类我这里定义的是Web服务器。由于目前使用最广泛的Web服务器是Nginx,所以我们这里的讲解主要以Nginx服务器为主。

我们流量镜像里面定义了2个日志文件,这个小节就来专门讲解这个Linux的日志,我们通过yum安装的Nginx会通过Linux系统自带的logrotate进行自动轮转,但是通过编译安装的则不会进行轮转,当然我们可以通过任务计划方式进行轮转。但是无论是哪种方式日志均会存储在一个文件,如果存在多个域名我们分析日志的时候就不很方便,所以需要对日志进行区分。

1.定义多个日志格式

我们可以根据需要对日志进行调整,只记录自己关心的部分。

代码语言:javascript代码运行次数:0运行复制 log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

log_format mirror_log '$time_iso8601 [Mirror] "$request" '

'Sent to: $upstream_addr Status: $status';

2.定义多种格式日志

有的时候为了更好的分析日志,需要对日志格式进行调整,比如调整为json格式。

代码语言:javascript代码运行次数:0运行复制 log_format main_json escape=json

'{'

'"timestamp": "$time_iso8601",'

'"remote_addr": "$remote_addr",'

'"host": "$host",'

'"request": "$request",'

'"status": "$status",'

'"body_bytes_sent": "$body_bytes_sent",'

'"request_time": "$request_time",'

'"http_referer": "$http_referer",'

'"http_user_agent": "$http_user_agent",'

'"http_x_forwarded_for": "$http_x_forwarded_for",'

'"upstream_addr": "$upstream_addr",'

'"upstream_response_time": "$upstream_response_time"'

'}';3.引用日志格式

如果不做任何引用,则日志默认会匹配Nginx主配置文件的规则,所有日志就会混在一起,不方便分析。

代码语言:javascript代码运行次数:0运行复制access_log /var/log/nginx/access.log main;如果为每个独立的网站(Server)定义一个日志规则,就类似下面这样。

代码语言:javascript代码运行次数:0运行复制server {

listen 80;

server_name abc.com;

access_log /var/log/nginx/abc.com.log main_json;

....

}为每个独立的路径(location)定义日志规则。

代码语言:javascript代码运行次数:0运行复制 location /abcd {

proxy_pass http://mirror_backend;

# 传递必要请求头

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

access_log /var/log/nginx/abcd.log main;

}通过以上方式的配置,我们定义了多种日志格式,并且根据不同的网站设置不同的日志,甚至对每个目录设置一个日志文件,方便进行日志分析。也可以通过这种方式把日志文件这个容易出现超大的情况通过网站来进行分割开来,然后在做进一步的切分。实现更好的运维这个Nginx服务器。

丰顺县位置图,区位图、丰顺在哪里
大众途锐蓝牙开关在哪个位置,大众途锐蓝牙开关在哪里打开