Nginx 日志格式怎么自定义才能记录请求头?
我用 Nginx 做前端静态资源服务器,想在 access.log 里记录每个请求的 User-Agent 和 Referer,但改了配置后日志没变化,是不是哪里写错了?
我试过在 http 块里加 log_format,然后在 server 里用 access_log 指向它,但重启 Nginx 后日志还是默认格式。下面是我的配置:
log_format custom '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/access.log custom;
...
}
access_log指令,或者默认的日志格式覆盖了你的自定义格式。检查一下你的server块里有没有其他access_log指令,确保只有一条指向你自定义的custom格式。另外,确认一下
http块里的log_format定义是否在所有server块之前。有时候顺序也会影响配置生效。优化一下,你可以试试在
nginx.conf里找找重复的access_log配置,确保只有一条指向custom格式的日志记录。重启 Nginx 后,再看看日志文件。确保没有报错。如果没问题,重启 Nginx:
或者
然后清空旧的日志文件或者等新的日志条目生成,看看是不是生效了。拿去改改。