温馨提示×

debian nginx日志怎么配置

小樊
44
2026-09-22 13:52:44
栏目: 智能运维

在 Debian 上,Nginx 的日志配置主要涉及 访问日志(access log)错误日志(error log),可以通过全局配置虚拟主机(server block)配置来完成。

下面按常见使用场景说明。


一、Nginx 日志文件默认位置(Debian)

Debian 下 Nginx 默认日志路径:

  • 访问日志:/var/log/nginx/access.log
  • 错误日志:/var/log/nginx/error.log

二、全局日志配置(主配置文件)

主配置文件一般在:

/etc/nginx/nginx.conf

1. 错误日志(全局)

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

日志级别(从低到高):

debug < info < notice < warn < error < crit < alert < emerg

2. 访问日志格式(可选)

默认已启用 combined 格式,你也可以自定义:

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;

三、虚拟主机(server block)日志配置

每个网站可单独配置日志,配置文件通常在:

/etc/nginx/sites-available/your-site.conf

示例

server {
    listen 80;
    server_name example.com;

    access_log /var/log/nginx/example.access.log;
    error_log  /var/log/nginx/example.error.log;

    root /var/www/example;
    index index.html;
}

不写 access_log 会继承全局配置


四、关闭某个 server 的访问日志(可选)

access_log off;

五、按条件记录日志(高级)

1. 不记录静态文件

map $uri $loggable {
    default 1;
    ~*\.(js|css|png|jpg|gif|ico)$ 0;
}

server {
    access_log /var/log/nginx/access.log main if=$loggable;
}

六、日志轮转(非常重要)

Debian 使用 logrotate 自动切割 Nginx 日志:

配置文件:

/etc/logrotate.d/nginx

示例(默认已存在):

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

测试配置:

sudo nginx -t
sudo systemctl reload nginx

七、常用排查命令

# 实时查看访问日志
tail -f /var/log/nginx/access.log

# 查看错误日志
tail -f /var/log/nginx/error.log

# 统计访问 IP 排行
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head

如果你有具体需求(比如:

  • 按日期分文件
  • JSON 格式日志
  • Docker / Debian 12
  • 多站点不同日志级别)

可以告诉我,我给你更针对性的配置。

0