微服务系列文章 之 nginx日志格式分析以及修改

如何自定义日志格式,就需要修改nginx日志打印格式

一. 打开终端,登录服务器并输入服务器密码

复制代码
//ssh 用户名@服务器ip
ssh [email protected]

二. 切换到nginx目录

复制代码
cd /var/log/nginx/

三. 查看nginx日志

复制代码
tail -f access.log

日志说明:

复制代码
//默认的nginx标准日志格式
192.168.10.251 - - [24/Apr/2022:15:07:52 +0800] "POST /web-api/api/tableTemp/getAllDataCount HTTP/1.1"  200 173 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36" "127.0.0.1"
//默认的nginx标准日志格式说明
$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"
  • $remote_addr 客户端IP地址
  • $remote_user 客户端用户名称,一般为空
  • $time_local\] 访问时间

  • $status 状态码
  • $body_bytes_sent 发送给客户端的文件大小
  • "$http_referer" 记录从哪个页面访问过来的
  • "$http_user_agent" 记录客户端相关信息

可以看到,默认的nginx标准日志是不包括接口响应时间的,如果想要看nginx接口响应时间,需要修改nginx配置

四. 修改nginx日志格式

在终端查看nginx状态及nginx配置文件位置

复制代码
nginx -t

打开nginx配置文件

复制代码
vi /etc/nginx/nginx.conf

编辑nginx配置文件

|------------------|
| //``进入编辑状态 i |

添加" r e q u e s t t i m e " , request_time", requestt​ime",request_time 单位秒,处理完请求需要花的时间

输入完成之后按esc键退出编辑模式,在终端输入:wq保存并退出

|-------|
| :wq |

重启nginx使nginx配置生效

|-------------------|
| nginx -s reload |

重启之后再进去nginx目录下查看日志就带时间啦

五. 其他日志参数说明

复制代码
$http_x_forwarded_for  #客户端的真实ip通常web服务器放在反向代理的后面这样就不能获取到客户的IP地址了通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中可以增加x_forwarded_for信息用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。$remote_addr   # 远程客户端的IP地址
$remote_user  #远程客户端用户名称用于记录浏览者进行身份验证时提供的名字如果没有登录就是空白。
$time_local  #访问的时间与时区比如18/Jul/2012:17:00:01 +0800时间信息最后的"+0800"表示服务器所处时区位于UTC之后的8小时。
$request_method #HTTP请求方法,通常为"GET"或"POST"
$scheme #请求使用的Web协议,"http" 或 "https"
$host #HTTP请求行的主机名>"HOST"请求头字段>符合请求的服务器名.请求中的主机头字段,如果请求中的主机头不可用,则为服务器处理请求的服务器名称
$request_uri #这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看$uri更改或重写
$uri  #请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改,$uri不包含主机名,如"/foo/bar.html"
$query_string #请求中的参数值
$server_protocol #服务器的HTTP版本,通常为 "HTTP/1.0" 或 "HTTP/1.1"
$status #HTTP响应代码
$body_bytes_sent #传输给客户端的字节数,响应头不计算在内;这个变量和Apache的mod_log_config模块中的"%B"参数保持兼容
$http_referer #url跳转来源,用来记录从那个页面链接访问过来的
$http_user_agent #用户终端浏览器等信息
$request_time #处理客户端请求使用的时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
$upstream_addr #真正提供服务的主机地址
$request_id  #生产唯一ID方便查询问题
$upstream_response_time #请求过程中upstream的响应时间
相关推荐
宁zz9 小时前
乌班图安装jenkins
运维·jenkins
大丈夫立于天地间10 小时前
ISIS协议中的数据库同步
运维·网络·信息与通信
rainFFrain10 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
xujiangyan_11 小时前
nginx的反向代理和负载均衡
服务器·网络·nginx
@郭小茶12 小时前
docker-compose方式部署docker项目
运维·docker·容器
自由鬼12 小时前
开源虚拟化管理平台Proxmox VE部署超融合
linux·运维·服务器·开源·虚拟化·pve
电星托马斯13 小时前
Linux系统CentOS 6.3安装图文详解
linux·运维·服务器·程序人生·centos
啞謎专家13 小时前
CentOS中挂载新盘LVM指南:轻松扩展存储空间,解决磁盘容量不足问题
linux·运维·服务器
s_little_monster14 小时前
【Linux】进程信号的捕捉处理
linux·运维·服务器·经验分享·笔记·学习·学习方法
一大Cpp14 小时前
Ubuntu与本地用户交流是两种小方法
linux·运维·ubuntu