Nginx默认日志路径/usr/local/nginx/logs/,其中包含访问日志accesss.log和错误记录日志error. log,查看Nginx请访问日志cat /usr/local/nginx/logs/access. log。
Nginx访问日志打印的格式可以自定义,例如 Nginx日志打印格式配置, log_format用来设置日志格式,name为模块名,type为日志类型,可以配置多个日志模块,分别供不同的虚拟主机日志记录所调用。
$remote_addr: 记录客户端IP地址
$server_name: 虚拟主机名称
$http_x_forward_for : Http请求端真实的IP
$remote_user: 记录客户端用户名称
$request: 记录请求的URL和HTTP协议
$status: 记录返回HTTP请求的状态
$uptream_status: upstream的状态
$body_bytes_sent: 发送给客户端的字节数,不包括响应头的大小
$connection_requests: 当前通过一个连接获得的请求数量
$http_referer: 记录从哪个页面链接访问过来的
$http_user_agent: 记录客户端浏览器相关信息
$msec;日志写入时间
$request_length请求的长度,包括请求行、请求头和请求正文
$request_time: 请求处理时间,单位为s,精度为ms, Nginx接受用户请求的第一个字节到发送完响应数据的时间,包括接收请求数据时间、程序响应时间,输出、响应数据时间
$upstream_response_time:应用程序响应时间, Nginx向后端服务建立连接开始到接受完数据然后关闭连接为止的总时间
通过 Nginx日志,可以简单分析Web网站的运行状态、数据报表,IP,UV( uniquePV(page view)访问量等需求。
(1) 统计Nginx服务器独立IP数,指令如下:awk '{print $1}' access.log | sort -r | uniq -c | wc -l
(2)统计 Nginx服务器总PV量,指令如下:awk '{print $7}' access.log | wc -l
(3)Nginx服务器UV统计,指令如下:awk '{print $11}' access.log | sort -r | uniq -c | wc -l
(4)分析 Nginx访问日志截至目前为止访问量前n列的IP,指令如下:awk ‘{print s1}' access.log | sort luniq-c | sort -nr | head-20
(5)分析 Nginx访问日志早上8点至中午12点的总请求量,指令如下:awk '/08:00/,/12:00/' test.log | wc -l
(6)分析 Nginx访问日志总的独立IP数,指令如下:awk '{print $1}' access.log | sort | uniq -c | wc -l
(7)分析 Nginx访问日志状态码404、502、503、500、499等错误信息页面,打印错误出现次数大于20的IP地址,指令如下:
awk ' {if ($9~/404|499|500|502|403/) print $1, $9)' , access.log | sort | uniq -c | sort -nr | awk '{if($1>20) print $2}'
(8)分析 Nginx访问日志访问最多的页面,指令如下:awk '{print $7}' test.log | sort | uniq -c | sort -nr
(9)分析 Nginx访问日志请求处理时间大于5s的URL,并打印出时间、URL、访客IP,指令如下:
awk '{if ($NF> 5) print $NF, $7, $1}' access.log | sort -nr | more