温馨提示×

nginx日志怎么配置

小樊
55
2026-08-02 18:52:12
栏目: 编程语言

Nginx 日志主要分为 访问日志(access_log) 和 错误日志(error_log),可以在 nginx.conf 或各个 server {} / location {} 中配置。下面按常见场景说明。


一、日志类型

1️⃣ 访问日志(access_log)

记录每一次请求的访问信息(IP、时间、URL、状态码等)

2️⃣ 错误日志(error_log)

记录错误、警告、调试信息


二、基本配置示例(nginx.conf)

http {
    # 日志格式
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

    # 访问日志
    access_log /var/log/nginx/access.log main;

    # 错误日志(级别:debug | info | notice | warn | error | crit | alert | emerg)
    error_log /var/log/nginx/error.log warn;

    server {
        listen 80;
        server_name example.com;

        location / {
            root /usr/share/nginx/html;
            index index.html;
        }
    }
}

三、常见日志级别说明

error_log file level;
级别 说明
debug 调试信息(需要编译时开启 debug)
info 一般信息
notice 注意信息
warn 警告
error 错误(默认)
crit 严重错误

✅ 生产环境建议

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

四、为不同 server 配置不同日志

server {
    listen 80;
    server_name a.example.com;

    access_log /var/log/nginx/a_access.log main;
    error_log /var/log/nginx/a_error.log warn;
}

server {
    listen 80;
    server_name b.example.com;

    access_log /var/log/nginx/b_access.log main;
    error_log /var/log/nginx/b_error.log error;
}

五、关闭日志(不推荐)

access_log off;
error_log /dev/null;

⚠️ 生产环境不建议完全关闭,至少保留 error_log。


六、按时间切割日志(常用)

Nginx 不会自动按天切割日志,一般配合 logrotate:

/etc/logrotate.d/nginx

示例:

/var/log/nginx/*.log {
    daily
    rotate 30
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        nginx -s reload
    endscript
}

七、常用变量说明

变量 含义
$remote_addr 客户端 IP
$time_local 本地时间
$request 请求行
$status HTTP 状态码
$body_bytes_sent 响应体大小
$http_user_agent UA
$http_x_forwarded_for 代理真实 IP

八、验证 & 重载配置

nginx -t
nginx -s reload

如果你有具体需求(比如 只记录 404、按接口分日志、JSON 格式、Docker / K8s 场景),可以直接告诉我,我给你定制配置。

0 踩