温馨提示×

怎样开启nginx日志记录

小樊
41
2026-08-29 04:51:25
栏目: 编程语言

要开启 Nginx 日志记录,主要是修改 nginx.conf 或对应 server / location 配置,主要涉及 访问日志(access_log)错误日志(error_log)。下面按常见场景说明。


一、确认 Nginx 是否已开启日志

一般情况下,Nginx 默认是开启日志的,只是路径可能不同。

检查配置文件:

nginx -T | grep -E "access_log|error_log"

或查看主配置文件:

vim /etc/nginx/nginx.conf

二、开启访问日志(access_log)

1️⃣ 全局开启(推荐)

http {} 块中:

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;
}

✅ 含义:

  • log_format:定义日志格式
  • access_log:指定日志文件路径和格式

2️⃣ 单独为某个站点开启

server {}location {} 中:

server {
    listen 80;
    server_name example.com;

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

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

三、开启错误日志(error_log)

1️⃣ 全局配置

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

2️⃣ 日志级别(常用)

级别 说明
debug 调试(不建议生产)
info 信息
notice 通知
warn 警告(常用)
error 错误
crit 严重

✅ 推荐生产环境:

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

四、检查并生效配置

1️⃣ 检查配置是否正确

nginx -t

2️⃣ 重载 Nginx

systemctl reload nginx
# 或
nginx -s reload

五、查看日志

tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

六、常见问题

❌ 日志不生成?

  • 目录不存在:
    mkdir -p /var/log/nginx
    chown -R nginx:nginx /var/log/nginx
    
  • 权限不足
  • 配置未 reload

❌ 想关闭访问日志

access_log off;

七、示例完整配置(简单版)

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

    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log warn;
}

如果你愿意,可以告诉我:

  • 系统(CentOS / Ubuntu / Docker)
  • Nginx 版本
  • 想记录哪些内容(真实 IP、POST、耗时等)

我可以帮你写一份 定制化日志配置

0