access_log
和error_log
指令进行设置。Nginx服务器中的日志相关配置
1. log_format指令
参数 | 说明 | 示例 |
name | 格式名称,用于在access_log指令中引用。 | main |
escape | 设置变量中的字符编码方式是json还是default,默认是default。 | escape=json |
string | 要定义的日志格式内容,可以使用Nginx变量。 | '$remote_addr $remote_user [$time_local] "$request" ' |
常用的一些变量包括:
$remote_addr
:记录客户端IP地址。
$http_x_forwarded_for
:记录客户端真实IP地址(如果通过代理)。
$remote_user
:记录客户端用户名称。
$request
:记录请求的URL和HTTP协议。
$status
:记录HTTP状态码。
$body_bytes_sent
:发送给客户端的字节数(不包括响应头大小)。
$bytes_sent
:发送给客户端的总字节数。
$connection
:连接的序列号。
$connection_requests
:当前通过一个连接获得的请求数量。
$msec
:日志写入时间,单位为秒,精度为毫秒。
$pipe
:如果请求是通过HTTP流水线(pipelined)发送,值为“p”,否则为“.”。
$http_referer
:记录从哪个页面链接访问过来。
$http_user_agent
:记录客户端浏览器相关信息。
$request_length
:请求的长度(包括请求行、请求头和请求正文)。
$request_time
:请求处理时间,单位为秒,精度为毫秒。
$time_iso8601
:ISO8601标准格式下的本地时间。
$time_local
:通用日志格式下的本地时间。
自定义日志格式的使用示例:
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/logs/nginx-access.log main;
2. access_log指令
参数 | 说明 | 示例 |
path | 日志文件的存储路径。 | /var/logs/nginx-access.log |
format | 日志格式,可以使用预定义的combined或自定义的格式名称。 | combined |
buffer | 内存缓存区大小,默认是64k。 | buffer=32k |
gzip | 日志写入前进行压缩,压缩级别可以是1到9,数值越大压缩比越高。 | gzip=1 |
flush | 缓存数据有效时间,超过该时间则清空缓存。 | flush=5m |
if | 条件判断,如果指定的条件计算结果为0或空字符串,则不写入日志。 | if=$scheme |
off | 关闭访问日志。 | access_log off; |
基本用法示例:
access_log /var/logs/nginx-access.log combined;
高级用法示例:
access_log /var/logs/nginx-access.log main buffer=32k gzip flush=1m;
3. error_log指令
参数 | 说明 | 示例 |
file | 指定错误日志的写入位置。 | /var/logs/nginx/error.log |
level | 指定日志级别,取值范围从低到高:debug, info, notice, warn, error, crit, alert, emerg,默认值是error。 | error |
基本用法示例:
error_log /var/logs/nginx/error.log;
高级用法示例:
error_log /var/logs/nginx/error.log info;
4. rewrite_log指令
参数 | 说明 | 示例 |
on | 启用重写日志,将在error log中记录notice级别的重写日志。 | rewrite_log on; |
off | 禁用重写日志。 | rewrite_log off; |
基本用法示例:
rewrite_log on;
相关问题与解答
问题1:如何在Nginx中记录客户端的真实IP地址?
答:当Nginx位于负载均衡器或反向代理时,可以通过$http_x_forwarded_for
变量来获取客户端的真实IP地址,可以在日志格式中使用该变量,
log_format custom '$http_x_forwarded_for $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"'; access_log /var/logs/nginx-access.log custom;
问题2:如何设置Nginx的错误日志级别?
答:可以通过error_log
指令来设置错误日志的级别,例如设置为info级别:
error_log /var/logs/nginx/error.log info;
这样,只有日志的错误级别等于或高于info的值才会被记录到错误日志中。
以上内容就是解答有关“详解Nginx服务器中的日志相关配置”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。