Nginx日志

本文详细介绍了Nginx中的日志配置,包括log_format的定义、access_log和error_log的使用,以及如何通过log_not_found和open_log_file_cache减少无用日志并优化性能。还讨论了如何处理404错误和日志轮转的基本操作。
摘要由CSDN通过智能技术生成

1、日志配置

1 日志模块

官方文档:ngx_http_log_module

2 相关指令

1 log_format                        日志格式

2 access_log                       访问日志

3 error_log                           错误日志

4 open_log_file_cache        日志缓存

3 日志格式和命令

1 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 /index.html HTTP/1.1"

$status:状态:记录请求状态。200成功返回值,404用户访问的资源不存在......

$body_bytes_sent:发送给客户端的字节数,不包括响应头的大小

$http_referer:记录从哪个页面链接访问过来的  (超链接)

$http_user_agent: 记录客户端浏览器相关信息

$http_x_forwarded_for:代理IP

$request_length :请求的长度(包括请求行,请求头和请求正文)。

$request_time: 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。

$time_iso8601:  ISO8601标准格式下的本地时间。

$bytes_sent: 发送给客户端的总字节数    (可在主配置文件中,增加此项观c)

$msec :日志写入时间。单位为秒,精度是毫秒。

总有一个404提示:

favicon.ico 文件是浏览器收藏网址时显示的图标,当第一次访问页面时,浏览器会自动发起请求获取页面的favicon.ico文件。当/favicon.ico文件不存在时,服务器会记录404日志。

    127.0.0.1 - - [26/Jul/2015:22:25:07 +0800] “GET /favicon.ico HTTP/1.1” 404 168 “-” “Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:36.0) Gecko/20100101 Firefox/36.0” “-”
    127.0.0.1 - - [26/Jul/2015:22:25:07 +0800] “GET /favicon.ico HTTP/1.1” 404 168 “-” “Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:36.0) Gecko/20100101 Firefox/36.0” “-“

解决办法

当一个站点没有设置favicon.ico时,access.log会记录了大量favicon.ico 404信息。

这样有两个缺点:
1.使access.log文件变大,记录很多没有用的数据。
2.因为大部分是favicon.ico 404信息,当要查看信息时,会影响搜寻效率。

解决方法如下:
在nginx的配置中加入

location = /favicon.ico {
  log_not_found off;
  access_log off;
}


以上配置说明:
location = /favicon.ico 表示当访问/favicon.ico时,
log_not_found off 关闭日志
access_log off 不记录在access.log

完整配置如下:

server {
  listen        80;
  server_name   fdipzone.com;
  root          /Users/fdipzone/home;

  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 index.htm index.php;
    include      /usr/local/etc/nginx/conf.d/php-fpm;
  }

4 访问日志和错误日志

访问日志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】时间

request请求:get获得,下载,还有post提交。

 内容:/nginx-logo.png  下载图片

http版本

状态码 什么结果。对,还是错

368 大小

引用自哪个连接,主页http://192.168.100.10/

Mozilla 5.0浏览器的版本

Windows NT 客户端系统类型

-远程客户端主机地址  (请看注释)

错误日志error_log

个性化定制

1 修改主配置文件

server{

        error_page 404 /404.html;
            location = /404.html {
                root            /xuleilinux;
        }

}
systemctl restart nginx

 2 创建错误反馈页面

vim /page/404.html

3 访问不存在的页面

4 查看404日志,观察404页面的现象。

5 日志缓存

简介:大量访问到来时,对于每一条日志记录,都将是先打开文件,再写入日志,然后关闭.占用了系统的IO,与业务无关。
可以使用open_log_file_cache来设

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

max 1000 指的是日志文件的FD,最大的缓存数量为1000。超了怎么办,看下面

min_users 3    20秒内小于3次访问的FD,就给你清掉,结合inactive 20s 的时间。

valid  1m  检查周期为1分钟。 

总结:缓存最多1000个,到了极限,每分钟开始清除掉  20秒内小于3次的文件FD.

Default:open_log_file_cache off;

Context:http, server, locatition,http{} 将整个服务器所有网站,所有页面的日志进行缓存,

server{} 将某一个网站的所有页面日志,进行缓存,location{}某一个页面的日志,进行缓存。

2、日志轮转

1 Nginx安装,会默认启动日志轮转。

rpm  -ql nginx| grep log
/etc/logrotate.d/nginx
/var/log/nginx

vim /etc/logrotate.d/nginx 

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值