Nginx自定义json日志输出

自定义输出日志的案例

http {
    # 自定义输出格式  json为自定义的名字,后面是变量拼接
    log_format json '{"remote_addr":"$remote_addr", '
                     '"remote_user":"$remote_user", '
                     '"request":"$request", '
                     '"msec":"$msec", '
                     '"request_time":"$request_time",'
                     '"query_string":"$query_string",'
                      '"http_user_agent":"$http_user_agent" }';
}
 server {
 	listen       80;
 	server_name  localhost;
 	# 开启重写日志
 	rewrite_log on;
    # 日志输出路径,后面的json指向log_format的命名
 	access_log   /var/log/nginx/point.log json;
 	
 	location /point/{
 	         # 下面是直接响应数据,或者改为转发
             default_type application/json;
             add_header Content-Type 'text/html; charset=utf-8';
             return 200 '{"code":0}';
     }
 	
 }

log_format常用变量
变量说明
$remote_addr客户端IP地址
$http_x_forwarded_for客户端IP地址
$remote_user客户端用户名称
$request请求的URL和HTTP协议
$status请求状态
$body_bytes_sent发送给客户端的字节数,不包括响应头的大小
$connection连接的序列号
$connection_requests当前通过一个连接获得的请求数量。
$msec日志写入时间。单位为秒,精度是毫秒。
$pipe如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。
$http_referer从哪个页面链接访问过来的,可以根据该参数进行防盗链设置
$http_user_agent客户端浏览器相关信息
$request_length请求的长度(包括请求行,请求头和请求正文)。
$request_time请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
$time_iso8601ISO8601标准格式下的本地时间
$time_local通用日志格式下的本地时间
$query_string请求url后面的数据
### 配置Nginx以处理JSON格式 #### JSON日志输出配置 为了使Nginx日志能够以JSON格式输出,可以通过自定义`log_format`指令来创建特定于应用需求的日志格式。这涉及到构建一个遵循JSON结构的字符串,在其中嵌入所需的变量[^1]。 ```nginx http { log_format json '{"time_local":"$time_local",' '"remote_addr": "$remote_addr", ' '"request_method": "$request_method", ' '"host": "$host", ' '"request_uri": "$request_uri"}'; access_log /var/log/nginx/access.log json; } ``` 上述配置指定了一个新的名为`json`的日志格式,并将其应用于访问日志中。每当有请求到达时,Nginx将以这种预设的JSON格式记录下每次交互的信息到指定路径下的文件里。 对于那些希望进一步优化其基础设施的人来说,还可以考虑按日期自动分割这些日志文件,以便更轻松地管理和分析大量数据[^3]。 #### 处理返回给客户端的JSON响应 当涉及通过Nginx传递JSON内容至最终用户时,则需关注如何确保所发送的数据保持正确的编码形式。如果发现经由代理转发后的JSON存在异常字符或格式错误的情况,可能是由于某些设置不当引起的[^2]。 一种常见的解决方案是在location块内加入适当的内容类型声明以及调整缓冲区参数: ```nginx server { location /api/ { add_header 'Content-Type' 'application/json'; proxy_buffering off; # 关闭缓存可防止部分传输问题 proxy_pass http://backend_service/; } } ``` 此段代码片段展示了怎样强制设定HTTP头部中的MIME类型为`application/json`,并禁用了代理缓冲机制,有助于减少因中间件处理而导致的目标资源被篡改的风险。 #### 实现服务监听与性能提升 除了基本的日志管理外,合理利用Nginx的各项特性——比如充当反向代理服务器、启用压缩算法(如Gzip)、实施重写规则等——同样重要。这样做不仅提高了系统的整体效率和服务质量,也为后续运维提供了便利条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值