错误日志

error_log path level(debug info notice warn error crit alert emerg)

可以配置在 main、http、server、location中,但是同一层面只能存在一个error_log配置

访问日志

access_log path format(format为日志格式,如果不加则默认格式)

可以配置到http, server, location配置段中。

日志格式

日志格式可以自定义,来满足需求

log_format name format

如果不设置则默认格式为 ‘$remote_addr - $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘“$http_user_agent”;

常见的格式变量如下

变量 说明
$time_local 通用日志格式下的本地时间;(服务器时间)
$remote_addr 客户端(用户)IP地址
$status 请求状态码,如200,404,301,302等
$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小
$bytes_sent 发送给客户端的总字节数
$request_length 请求的长度(包括请求行,请求头和请求正文)
$request_time 请求处理时间,单位为秒,小数的形式
$upstream_addr 集群轮询地址
$upstream_response_time 指从Nginx向后端(php-cgi)建立连接开始到接受完数据然后关闭连接为止的时间
$remote_user 用来记录客户端用户名称
$request 请求方式(GET或者POST等)+URL(包含$request_method,$host,$request_uri)
$http_user_agent 用户浏览器标识
$http_host 请求的url地址(目标url地址)的host
$host 等同于$http_host
$http_referer 来源页面,即从哪个页面转到本页,如果直接在浏览器输入网址来访问,则referer为空
$uri 请求中的当前URI(不带请求参数,参数位于$args),不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改。
$document_uri 等同于$uri
$request_uri 比$uri多了参数,即$uri+$args
$http_x_forwarded_for 如果使用了代理,这个参数会记录代理服务器的ip和客户端的ip

过滤指定文件

对于一些静态资源文件。如CSS,JS,PNG等的访问,默认也会记录到日志中,但是实际上这些文件的日志意义不大,可以对其进行过滤,不记录在日志中

过滤的方式其实不复杂,根据location对不需要记录的路径进行匹配,然后关闭access_log即可

server {
	...
	...
	...

	location ~* \.(css|js|jpg|gif|png)$ {
		access_log  off;
		#或者
		#access_log /dev/null;
	}
}