Nginx基础篇-Nginx的日志模块

Nginx基础篇-Nginx的日志模块

日志模块

日志模块名称:
	ngx_http_log_module

相关指令

log_format:日志格式
access_log :访问日志
error_log:错误日志
open_log_file_cache:日志缓存
	open_log_file_cache  max=N [inactive=time]  [mim_uses=N]  [valid=time]  | off

该指令默认是禁止的,等同于:
open_log_file_cache off;

open_log_file_cache 指令的各项参数说明如下:
max: 设置缓存中的最大文件描述符数量。如果超过设置的最大文件描述符数量,则采用  LRU (Least Recently Used) 算法清除"较不常使用的文件描述符"。  LRU (Least Recently Used) 算 法的基本概念是:当内存缓冲区剩余的可用空间不够时,缓冲区尽可能地先保留使用者最常使用 的数据,将最近未使用的数据移出内存,腾出空间来加载另外的数据。

inactive:  设置一个时间,如果在设置的时间内没有使用此文件描述符,则自动删除此描述符。 此参数为可选参数,默认的时间为 10 秒钟。

min_uses: 在参数 inactive 指定的时间范围内,如果日志文件超过被使用的次数,则将该日 志文件的描述符记入缓存。默认次数为 1。

valid: 设置多长时间检查一次,看一看变量指定的日志文件路径与文件名是否仍然存在。默 认时间为 60秒。
off: 禁止使用缓存。

open_log_file_cache  指令的设置示例如下:
open_log_file_cache  max=1000  inactive=20s  min_uses=2  valid=1m; 

日志的格式和命令

log_format
一、简介:Nginx有非常灵活的日志记录模式。每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令定义。
二、语法:Syntax: log_format name [escape=default|json] string …;
name 表示格式名称
string 表示定义的格式
三、默认值:Default: log_format combined “…”;
四、环境:Context: http context
1.网站代理LB
例如代理服务器的日志格式就不同
①、如果Nginx位于负载均衡器,squid,nginx反向代理之后,web服务器无法直接获取到客户端真实的IP地址。
$remote_addr获取的是反向代理的IP地址。反向代理服务器在转发请求的http头信息中,可以增加X-Forwarded-For信息,
用来记录客户端IP地址和客户端请求的服务器地址。
②、nginx代理日志格式如下

		log_format porxy '$http_x_forwarded_for - $remote_user [$time_local] '
' "$request" $status $body_bytes_sent '
' "$http_referer" "$http_user_agent" ';

五、定义设置位置

		vim /etc/nginx/nginx.conf
		log_format combined  '$remote_addr - $remote_user [$time_local] '
'	"$request" $status $body_bytes_sent '
' 	"$http_referer" "$http_user_agent" ';

日志格式允许包含的变量

$remote_addr, $http_x_forwarded_for
①.远程地址: 记录客户端IP地址
②.代理IP
$remote_user
远程用户:记录客户端用户名称
[$time_local]
本地时间:服务器自身时间
$request
请求:记录请求的URL和HTTP协议
	"GET /1.html HTTP/1.1"
	"GET /index.html HTTP/1.1"
$status 
状态:记录请求状态:200、404、503、100、301
$body_bytes_sent 
发送给客户端的字节数,不包括响应头的大小
$bytes_sent
发送给客户端的总字节数    (可在主配置文件中,增加此项观c)
$msec 
日志写入时间。单位为秒,精度是毫秒。
$http_referer 
记录从哪个页面链接访问过来的  (超链接)
$http_user_agent
记录客户端浏览器相关信息
$request_length 
请求的长度(包括请求行,请求头和请求正文)。
$request_time
请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
$time_iso8601
 ISO8601标准格式下的本地时间。

访问日志和错误日志

access_log

192.168.100.254 - - [17/Dec/2017:14:45:59 +0800] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://192.168.100.10/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0" "-"

192.远程主机IP
- -   用户
【2017】时间
get获得,下载,还有post提交。
 /nginx-logo.png  下载图片
http版本
状态码 什么结果。对,还是错
368 大小
引用自哪个连接,主页http://192.168.100.10/
Mozilla 5.0浏览器的版本
Windows NT 客户端系统类型
-远程客户端主机地址  (请看注释)

error_log

日志缓存

简介:大量访问到来时,对于每一条日志记录,都将是先打开文件,再写入日志,然后关闭。
可以使用open_log_file_cache来设

Syntax:open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m ;

①max:缓存的最大数。(超过之后1000个文件描述符就把不常用的清理掉)。不是所有的日志文件都会缓存,只有使用量比较大的1000个fd才会缓存。

②inactive:无效时间20秒。结合最小次数使用min_user。淘汰策略

③min_user:结合无效时间,比如三分钟,低于3次访问,就清除出缓存。淘汰策略

④valid:有效时间,比如一分钟检查一次是否有更新。检查周期

比如当服务器开启了日志缓存,日志缓存最多缓存1000个文件。如果超了这个数字,就把相对使用比较少的日志清理出缓存。
为了避免使用频率较低的日志进入缓存,所以设置淘汰机制。
在20秒之内,如果这个日志文件被使用的频率,低于3次,那么就有可能被清理出缓存。
每隔一分钟检查一下缓存,看谁的计时器和使用次数不够就吧谁清理出去。

Default:open_log_file_cache off;
Context:http, server, locatition

①http{} 将整个服务器所有网站,所有页面的日志进行缓存
②server{} 将某一个网站的所有页面日志,进行缓存
③location{}某一个页面的日志,进行缓存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值