温馨提示×

nginx日志格式如何配置

小樊
48
2026-09-04 10:58:31
栏目: 编程语言

在 nginx 中,日志格式通过 log_format 指令定义,然后在 access_log 指令中引用。下面从基础到常用示例逐步说明。


一、基本配置位置

日志格式一般配置在 http 块 中(全局生效),也可以在 server 或 location 中单独配置。

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] '
                      '"$request" $status $body_bytes_sent '
                      '"$http_referer" "$http_user_agent"';

    access_log  /var/log/nginx/access.log  main;
}

二、常用变量说明

变量 含义
$remote_addr 客户端 IP
$remote_user 认证用户
$time_local 本地时间
$request 请求行(方法 URL 协议)
$status HTTP 状态码
$body_bytes_sent 发送给客户端的字节数
$http_referer 来源页
$http_user_agent 客户端浏览器
$request_time 请求总耗时(秒)
$upstream_response_time 后端响应时间
$host 请求的 Host
$server_name 匹配的 server 名称

三、常用日志格式示例

1️⃣ 默认格式(类似 Apache)

log_format main '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent"';

2️⃣ 包含响应时间(推荐)

log_format timing '$remote_addr - $remote_user [$time_local] '
                  '"$request" $status $body_bytes_sent '
                  '$request_time $upstream_response_time '
                  '"$http_referer" "$http_user_agent"';

3️⃣ JSON 格式(方便 ELK / 日志分析)

log_format json escape=json '{'
    '"time":"$time_iso8601",'
    '"remote_addr":"$remote_addr",'
    '"request":"$request",'
    '"status":$status,'
    '"body_bytes_sent":$body_bytes_sent,'
    '"request_time":$request_time,'
    '"upstream_time":"$upstream_response_time",'
    '"http_user_agent":"$http_user_agent"'
'}';

使用:

access_log /var/log/nginx/access.log json;

4️⃣ 按 server 单独配置

server {
    listen 80;
    server_name example.com;

    access_log /var/log/nginx/example.access.log main;
}

四、错误日志配置

error_log /var/log/nginx/error.log warn;

日志级别: debug | info | notice | warn | error | crit | alert | emerg


五、注意事项

  1. log_format 必须在 access_log 之前定义
  2. 修改后需重载 nginx:
    nginx -t
    nginx -s reload
    
  3. 高并发场景建议使用 buffer:
    access_log /var/log/nginx/access.log main buffer=32k flush=5s;
    

如果你有 特定分析需求(如统计接口耗时、用户行为、安全审计),可以告诉我,我帮你定制日志格式。

0 踩