官方文档:http://nginx.org/en/docs/http/ngx_http_log_module.html
日志模块的名称: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: 禁止使用缓存。
日志的格式和命令
log_format
简介:Nginx有非常灵活的日志记录模式。每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令定义。
语法:Syntax: log_format name [escape=default|json] string ...;
- name 表示格式名称
- string 表示定义的格式
默认值:Default: log_format combined "...";
log_format 有默认的无需设置的combined日志格式,相当于apache的combined日志格式
定义设置位置
vim /etc/nginx/nginx.conf
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
日志格式允许包含的变量
$remote_addr - 远程地址: 记录客户端IP地址
$remote_user - 远程用户:记录客户端用户名称
[$time_local] - 本地时间:服务器自身时间
$request - 请求:记录请求的URL和HTTP协议“"GET /1.html HTTP/1.1"”
$status - 状态:记录请求状态“200,404,503”
$body_bytes_sent - 发送给客户端的字节数,不包括响应头的大小
$http_referer - 记录从哪个页面链接访问过来的 (超链接)
$http_user_agent - 记录客户端浏览器相关信息“火狐,IE”
$http_x_forwarded_for - 代理IP
示例
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.168.100.254 远程主机IP
- - - 用户
- 2017。。 时间
- get 下载
- /nginx-logo.png 下载图片
- http版本
- 200状态码
- 368 大小
- 引用自哪个连接,主页http://192.168.100.10/
- Mozilla 5.0浏览器的版本
- Windows NT 客户端系统类型
- “-”远程客户端主机地址