+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

自定义Nginx访问日志内容

Nginx的访问日志默认有自己的格式,为了获取更多的访问数据,或者为了更方便的查看各输出字段的意义,可以自定义日志的内容。 ▶ Nginx日志常用字段 首先了解一下Nginx日志常用字段: ------------------ 参数 说明 示例 $remote_addr 客户端地址 127.0.0.1 $remote_user 客户端用户名称 - $time_local 访问时间和时区 18/Aug/2023:12:37:26 +0800 $request 请求的URI和HTTP协议 "GET /xxx/xxx.png HTTP/1.1" $http_host 请求地址,即浏览器中你输入的地址(IP或域名) www.x.com 127.0.0.1 $status HTTP请求状态 200 $upstream_status upstream状态 200 $body_bytes_sent 发送给客户端文件内容大小 1547 $http_referer url跳转来源 https://www.baidu.com/ $http_user_agent 用户终端浏览器等信息 Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) $ssl_protocol SSL协议版本 TLSv1 $ssl_cipher 交换数据中的算法 RC4-SHA $upstream_addr 后台upstream的地址,即真正提供服务的主机地址 127.0.0.1:8080 $request_time 整个请求的总时间 0.205 $upstream_response_time 请求过程中,upstream响应时间 0.002 $http_x_forwarded_for http扩展头,记录请求端真实IP IP0, IP1, IP2 ------------------ ▶ 配置 直接上代码(需要定义在 /etc/nginx/nginx.conf 的 http 节点里) ------------------ http{ log_format log1 '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '$upstream_response_time $request_time ' '$upstream_response_time $request_time ' '"$http_user_agent" "$http_x_forwarded_for" '; } ------------------ 如果nginx的日志需要按该格式输出,配置如下(注意在日志路径末尾添加 log1): access_log /opt/nginx/logs/access.log log1; 如果希望日志能以json格式输出,配置如下 ------------------ http{ log_format log_json '{"remote_addr":"$remote_addr", ' '"remote_user": "$remote_user",' '"time_local": "$time_local",' '"request": "$request",' '"http_host": "$http_host",' '"status": "$status",' '"body_bytes_sent": "$body_bytes_sent",' '"http_referer": "$http_referer",' '"http_user_agent": "$http_user_agent",' '"http_x_forwarded_for": "$http_x_forwarded_for"' '}'; } ------------------ 然后在日志输出里确认按json格式输出即可: access_log /opt/nginx/logs/access.log log_json;
我的笔记