前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何自定义 Nginx日志?

如何自定义 Nginx日志?

作者头像
用户1560186
发布2019-11-19 20:37:42
2.1K0
发布2019-11-19 20:37:42
举报
文章被收录于专栏:运维录运维录

开始之前


为什么要自定义nginx日志? 这里有个例子。示例中希望 nginx 能够记录 php-fpm (上游服务器)执行程序所花费的时间,以便为优化服务器端(程序)响应时间提供支持,nginx 提供了 ngx_http_log_module 模块用于个性化日志配置。

环境描述
代码语言:javascript
复制
# nginx 反向代理 php-fpm
容器镜像: php:5.6-fpm
容器系统: debian 8 (jessie)
nginx版本: nginx-1.9.12
操作步骤

1. 日志格式

编辑 nginx.conf配置文件,log_format 指令中加入 $upstream_response_time 变量,例如:

代码语言:javascript
复制
cat /etc/nginx/nginx.conf

# 省略...

http {
    # 省略...
    log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" $upstream_response_time';       
}

2. 使用自定义日志格式

在虚拟主机配置文件中使用自定义的日志格式。

代码语言:javascript
复制
cat /etc/nginx/conf.d/default.conf

server {

    # 省略...
    access_log  /var/log/nginx/access.log access;
}

3. 重启 nginx

代码语言:javascript
复制
nginx -t && nginx reload

4. 验证

访问服务器日志输出如下,最后一个字段0.027 为上游php-fpm服务器所花费的时间。

代码语言:javascript
复制
docker logs --tail 1 -f crm-web

119.188.116.16 - - [30/Mar/2016:16:59:45 +0800] "GET /index.php HTTP/1.1" 200 15035 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11) AppleWebKit/601.1.56 (KHTML, like Gecko) Version/9.0 Safari/601.1.56" 106.37.1xx.2xx 0.027
日志相关指令

1. log_format

代码语言:javascript
复制
语法: log_format name string ...;
默认值: log_format combined "...";
使用字段: http
功能: 定义日志格式。

2. access_log

代码语言:javascript
复制
语法: access_log path [format [buffer=size] ...];
      access_log off;
默认值: access_log logs/access.log combined;
使用字段: http, server, location, if in location
功能: 设置日志的路径、格式、配置缓冲。如果设置off 则关闭日志,如果未指定格式,则使用预定义的"combined"格式。
小结

最后来总结下文章中的知识点

  • log_format 指令提供个性化日志配置,access_log指令则使用定义好的日志格式。
  • $upstream_response_time 变量,是指从nginx 向上游服务器建立连接开始到其执行结束的时间。
  • 此外还有一个 $request_time 变量,是指从接受用户请求的第一个字节到发送完响应数据的时间,即包括接收请求数据时间、程序响应时间、输出响应数据时间。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境描述
  • 操作步骤
  • 日志相关指令
  • 小结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档