前言:
Nginx日志里面Mobileweb_access.log增长特别大,一天上百兆,将近100W的访问记录,按照我们目前的规模,热点用户才500个左右,就算人人用手机app访问,怎么可能会有这么大的url访问量?以前只是安装使用nginx,还没有抽出时间仔细研究,这回需要彻底的去分析nginx日志了。
1,日志分类
主要2种,一种是错误日志,一种是访问日志,这些配置都在/usr/local/nginx/conf/nginx.conf里面,默认都是打开的,自己也可以选择关闭。
1.1,访问日志
访问日志主要记录每一个访问nginx的请求,格式可以自己定义,在nginx.conf文件里面,通过访问日志,你可以看到每一个请求的详细信息,对于访问日志的格式,主要是配置文件中的log_format来限制的。
1.1.1 log_format日志格式
$request_time:整个请求的总时间。
$time_iso8601:访问的时间与时区,比如18/Jul/2012:17:00:01 +0800,时间信息最后的"+0800"表示服务器所处时区位于UTC之后的8小时。
$upstream_response_time:请求过程中,upstream的响应时间。
$request_method:客户端请求的动作,通常为GET或POST。
$request_uri:是浏览器发过来的值。该值是rewrite后的值。例如做了internal redirects后。
$args:这个变量等于请求行中(GET请求)的参数,例如foo=123&bar=blahblah;
$query_string:与$args相同。
$proxy_add_x_forwarded_for:变量包含客户端请求头中的"X-Forwarded-For",与$remote_addr用逗号分开,如果没有"X-Forwarded-For" 请求头,则$proxy_add_x_forwarded_for等于$remote_addr。
$upstream_addr:upstream的地址,即真正提供服务的主机地址。
$status:记录请求返回的http状态码,比如成功是200。
$http_user_agent:客户端浏览器信息
$http_range
$sent_http_content_length:发送内容的长度
$body_bytes_sent:发送给客户端的文件主体内容的大小,比如899,可以将日志每条记录中的这个值累加起来以粗略估计服务器吞吐量。
$http_referer:记录从哪个页面链接访问过来的。
$host:请求主机头字段,否则为服务器名称。
$http_x_forwarded_for:客户端的真实ip,通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代