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

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

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

//ssh 用户名@服务器ip
ssh root@192.168.0.132

二. 切换到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] 访问时间
  • "$request" 记录请求HTTP的方式以及URL
  • $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的响应时间
相关推荐
_.Switch3 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_850410833 小时前
文件系统和日志管理
linux·运维·服务器
JokerSZ.3 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
芯盾时代4 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方5 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘5 小时前
NFS服务器
运维·服务器
苹果醋36 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
二十雨辰6 小时前
[linux]docker基础
linux·运维·docker
Jason-河山7 小时前
【自动化更新,让商品信息跳舞】——利用API返回值的幽默编程之旅
运维·自动化
雨雪飘零7 小时前
Windows系统使用OpenSSL生成自签名证书
nginx·证书·openssl