国庆过去大半,终于闲下来可以更新博客了,今天说一下Nginx 的各种日志的使用以及配置方法。你们别看我一天更新好几篇博 客,是因为我日常时候的笔记都会做,大部分都是word 文档,内容杂乱无章,写博客的原因也是对自己的知识体系进行一次完整的梳理,让更多的小伙伴可以学到更多有用的东西。闲话不多说,下面直接开始。
下面先贴一下我自己的配置文件
[root@web-01 ~]# cat /application/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include extra/www.conf;
include extra/bbs.conf;
include extra/blog.conf;
include extra/status.conf;
}
#默认Nginx 的错误日志和访问日志都是注释掉的,由于我这个是精简过的配置文件,咱们可以去nginx 自带的默认文件去看看自带的日志配置
下面是默认的nginx的配置文件部分信息
[root@web-01 ~]# vim /application/nginx/conf/nginx.conf.default
5 #error_log logs/error.log;
6 #error_log logs/error.log notice;
7 #error_log logs/error.log info;
这里就不把默认的配置全部贴出来了,只找出日志相关的配置。前面的数字是行数。
说明:编写错误日志语法信息:http://nginx.org/en/docs/ngx_core_module.html#error_log
-----------------------------------------------------------------------------------------
21 #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
22 # '$status $body_bytes_sent "$http_referer" '
23 # '"$http_user_agent" "$http_x_forwarded_for"';
25 #access_log logs/access.log main;
上面4行是访问日志的一些配置信息,先说完错误日志再说访问日志
咱们先去官网看一下官方文档怎么说的。
上面红框里面写了 错误日志的语法,默认配置和可以配置的区域(主干、http、邮件呀、sever区、location里面都可以配置,下面的文字是一些说明,以及nginx的 debug日志的一些说明(需要编译开始debug功能,)这里就先不讨论debug的使用,先看错误日志的使用)。
咱们就先从最简单的开始应用,直接在main区域下开启错误日志的功能把。
[root@web-01 ~]# cat /application/nginx/conf/nginx.conf
worker_processes 1;
error_log logs/error.log error; #后面的error是错误级别,写不写都行,默认就是记录错误信息的。
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include extra/www.conf;
include extra/bbs.conf;
include extra/blog.conf;
include extra/status.conf;
}
#然后 平滑重启一下。
[root@web-01 /application/nginx/logs]# ll
total 56
-rw-r--r-- 1 root root 42263 Oct 5 12:29 access.log
-rw-r--r-- 1 root root 1 Oct 5 13:24 error.log
-rw-r--r-- 1 root root 5 Oct 5 12:28 nginx.pid
可以看到已经有error文件的存在,那咱们就测试一下error日志的功能把,咱们把配置文件修改一下然后平滑重启之后看看日志会不会记录
[root@web-01 /application/nginx/logs]# /application/nginx/sbin/nginx -s reload
nginx: [emerg] "http" directive is not allowed here in /application/nginx-1.12.2/conf/nginx.conf:6
#我把配置文件中的某一行的中括号删除掉了,然后平滑重启报错,先不管这个,先去看看error log 会不会记录。
有记录,跟重启的时候报的错误一样,咱们再修改一下试试
我这次把错误日志的配置给修改了一下,去掉了一个;号,还是不让我重启,再看一下错误日志
还是一样报错,继续测试,这次测试一下我访问站点目录下没有存在的文件会不会记录,也就是404报错之类的,先把之前修改的配置还原回去
红框里面出现了错误信息,说的是bbs站点下打开一个dadasda的文件失败,没有这个目录或文件,来自192.168.100.1的请求,访问的主机是bbs.yaonie.com。到这里就发现不管是配置文件的错误,还是客户端访问的错误都会记录下来。错误日志的使用相对来说简单的一匹,重点是下面要说的访问日志,不管是工作中还是日常生产环境中访问日志比错误日志重要千倍。
接下来平滑重启一下,清空一下以前的访问日志的信息
然后 tail -f access.log 文件,让文件实时刷新一下。
OK,访问了,查看日志文件
你会发现出现304 的代码,前几篇博客里面说到304的代码是代表浏览器本地有缓存,304后面的0代表请求文件的大小,因为有缓存了所以是0,手动强制刷新一下 回到浏览器ctrl+f5 刷新
看见状态码变成200了,请求文件大小21 。
OK.接下来说明一下配置文件里面的访问日志配置的参数含义以及对于关系。
了解日志中变量信息
$remote_addr 192.168.100.1 --- 显示客户端源地址信息
$remote_user - --- 显示登录认证用户信息
[$time_local] [05/Oct/2018:14:10:58 +0800] --- 显示访问时间信息
"$request" "GET / HTTP/1.1" --- 显示请求报文的起始行信息
$status 200 --- 显示状态码信息;304状态码表示请求走缓存
$body_bytes_sent 21 --- 服务端响应数据信息大小
"$http_referer" --- 省略???
"$http_user_agent" Chrome --- 客户端利用什么软件方式访问以及操作系统(了解即可)
"$http_x_forwarded_for" --- (反向代理相关信息)
是不是很简单,哈哈哈。今天日志先写到这,更多详细的配置可以去官方网站上去查询
http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log