nginx日志
Nginx 日志模块 笔记整理
一、日志模块基础信息
表格
项目 内容
模块名称 ngx_http_log_module
官方文档地址 http://nginx.org/en/docs/http/ngx_http_log_module.html
核心作用 记录 Nginx 的访问请求与错误信息,支持自定义日志格式、分场景配置独立日志
二、核心相关指令
表格
指令 作用
log_format 自定义日志格式,定义日志中包含的变量与排版
access_log 配置访问日志的文件路径、格式、缓存等
error_log 配置错误日志的文件路径、日志级别
open_log_file_cache 日志文件缓存优化,提升高并发场景下日志写入性能
三、log_format 指令详解
- 简介
Nginx 支持非常灵活的日志记录模式,http/server/location等不同级别的配置可以有各自独立的访问日志,日志格式通过 log_format 命令定义。 - 语法格式
nginx
Syntax: log_format name [escape=default|json] string ...;
Default: log_format combined "...";
Context: http
name:自定义日志格式的名称,后续 access_log 中通过该名称引用格式
escape:设置日志中特殊字符的转义规则,可选 default(默认转义)或 json(兼容 JSON 格式转义)
string:日志内容模板,可嵌入 Nginx 内置变量定义日志字段
四、日志格式常用内置变量
表格
变量 作用说明
$remote_addr 客户端 IP 地址
$remote_user 客户端用户名(需 HTTP 基础认证时有效)
[$time_local] 服务器本地时间,记录请求发生的时间
$request 完整请求行,包含请求方法、URL 和 HTTP 协议(例:"GET /1.html HTTP/1.1")
$status HTTP 响应状态码(例:200/404/502)
$body_bytes_sent 发送给客户端的响应体字节数(不含响应头)
$http_referer 请求来源页面 URL(记录用户从哪个页面链接访问)
$http_user_agent 客户端浏览器 / 设备的 User-Agent 信息
$http_x_forwarded_for 代理场景下的真实客户端 IP(需代理服务器传递该请求头)
五、补充实战配置示例 - 自定义访问日志格式
nginx
在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;
server {
listen 80;
server_name example.com;
为当前虚拟主机单独配置日志(复用main格式)
access_log /var/log/nginx/example_access.log main;
location / {
root /usr/share/nginx/html;
}
}
}
2. 错误日志配置
nginx
全局错误日志,级别为warn(记录warn及以上级别的错误)
error_log /var/log/nginx/error.log warn;
server {
listen 80;
server_name example.com;
# 为当前虚拟主机单独配置错误日志,级别为error
error_log /var/log/nginx/example_error.log error;
}
3. 日志缓存优化(高并发场景)
nginx
http {
# 开启日志文件缓存,最多缓存100个文件描述符,缓存超时时间60秒
open_log_file_cache max=100 inactive=60s valid=5m min_uses=2;
}
六、关键注意事项
log_format 指令只能在 http 块中定义,不能在 server/location 块中定义。
access_log 可以在 http/server/location/if/limit_except 块中配置,支持不同场景分文件记录日志。
日志文件路径需确保 Nginx 运行用户(通常为 nginx)有写入权限,否则会报错无法记录日志。
生产环境建议定期对日志进行切割 / 轮转(可配合 logrotate 工具),避免单个日志文件过大。************
浙公网安备 33010602011771号