1.日志配置
官方文档:Module ngx_http_log_module
日志模块名称:ngx_http_log_module
(1) log_format 日志格式
(2) access_log 访问日志
(3) error_log 错误日志
(4) 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 "..."; log_format 有默认的无需设置的combined日志格式,相当于apache的combined日志格式
环境:Context: http context
网站,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 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 状态;记录请求状态:![](https://i-blog.csdnimg.cn/blog_migrate/6f229ea61378d607d29a9bbf5c522c77.png)
$boby_bytes_sent 发送给客户端的字节数,不包括响应头的大小
$http_user_agent 记录客户端浏览器相关信息:火狐或者IE等
$http_x_forwarded_for 代理IP
小提示:
访问日志中总有:404的报错提示:
为了避免增加更大的访问存储量可以关闭:解决问题
server {
liisten 80;
server_name 自己的域名(A,com);
root /usr/share/nginx/html;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log debug;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location / {
index index.html;
include /etc/nginx/default.d/*.conf;
}
}
访问日志和错误日志:
access_log/error_log
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" "-"
error_log:设置个性化错误日志
进入主配置文件
server {
error_papg 404/404.html;
location = /404.html {
root /自己命名文件(linux);
}
}
提示必须保证根下有自己命名的的文件夹里面有404.html ,404.html里面再插入你想换的个性化东西即可
保存重启nginx即可
日志缓存:大量访问到来时,对于每一条日志记录,都将是先打开文件,再写入日志,然后关闭.占用了系统的IO,与业务无关。
可以使用open_log_file_cache来设
syntax:
open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m ;总结:缓存最多1000个,到了极限,每分钟开始清除掉 20秒内小于3次的文件的FD