Nginx日志自定义记录以及启用日志缓冲区详解

  

  

如果想统计网站的访问来源信息,可以用php获取信息,记录到数据库的形式,也可以直接使用nginx提供的访问日志,来记录网站的访问详情,管理员可以通过分析nginx的访问日志,来分析用户的访问来源,访问行为详情,网站页面访问热度等。此外,nginx自身也有错误日志,方便运维人员调试nginx。对于记录日志的行为,如果每次进行磁盘操作,将会较多的耗费资源,基于这个情况可以开启nginx日志缓冲区,缓冲区满或者定时写入的时间到了,再一次写入日志。

  


  

  

nginx在处理请求后立即在访问日志中写入有关客户端请求的信息。默认情况下,访问日志位,日志/访问。日志中,信息以预定义的组合格式写入日志。

  

想要精确记录访问信息,就需要自定义一个更加完整的访问日志格式,如下所示:

        http {   log_format geoproxy   “[$ time_local] remote_addr美元”   “realip_remote_addr remote_user美元”   “request_method server_protocol美元”   “计划server_name uri美元美元地位”   “request_time body_bytes_sent美元”   “geoip_city_country_code3 geoip_region美元”   “geoip_city美元”$ http_x_forwarded_for '   “upstream_status upstream_response_time美元”   “http_referer美元”“http_user_agent美元”;   …   }      

这个日志配置被命名为geoproxy,它使用许多nginx变量来演示nginx日志记录功能。详细讲解配置选项中各个变量的具体含义:

  

当用户发起请求时,会记录服务器时间,time_local美元,美元remote_user值为通过基本授权的用户名称;

  

用于nginx处理,geoip_proxy和,realip_header指令的打开连接的IP地址和客户端IP地址;

  

之后记录HTTP请求方法,request_method美元,协议,server_protocol美元和HTTP方法,美元方案:HTTP或,https;

  

当然还有服务器名称,server_name美元,请求的URI和响应状态码;

  

除基本信息外,还有一些统计的结果数据:包括请求处理的毫秒级时间,request_time美元,服务器响应的数据块大小,body_bytes_sent美元;

  

此外,客户端所在国家,geoip_city_country_code3美元地区,geoip_region美元和城市信息,美元geoip_city也被记录在内;

  

变量,美元http_x_forwarded_for用于记录由其它代理服务器发起的请求的,X-Forwarded-For头消息;

  

上游模块中一些数据也被记录到日志里:被代理服务器的响应状态码,upstream_status美元,建立链接和从上游服务器接收响应主体最后一个字节的时间,upstream_response_time美元,建立和上游服务器的链接时间,upstream_connect_time美元,建立链接和从上游响应头的第一个字节的时间,upstream_header_time美元。

  

请求来源,http_referer美元和用户代理,http_user_agent美元也可以被记录在日志里;

  

nginx的日志记录功能非常强大和灵活的,需要注意的是:,用于定义日志格式的,log_format指令仅适用于,http块级指令内,所有时间值均以毫秒为单位,以毫秒分辨率进行测量只。

  

这个格式的日志配置将产生如下类型的日志:

  
  

[25日/2月/2019:16:20:42 + 0000]10.0.1.16 192.168.0.122德里克。
  HTTP/1.1 www.example.com HTTP/200 0.001 370美国MI
  0.001 - 200“安阿伯市——““旋度/7.47.0”
  

     

如果需要使用这个日志配置,需要结合使用,access_log指令,,access_log指令接收一个日志目录和使用的配置名作为参数:

        服务器{   access_log/var/log/nginx/access.日志geoproxy;   …   }      

access_log能在多个上下文使用,每个上下文中可以定义各自的日志目录和日志记录格式。

  

结论:nginx中的日志模块允许为不同的场景配置日志格式,以便查看不同的日志文件。

  

在实际运用中,为不同上下文配置不同的日志会非常有用,记录的日志内容可以简单的信息,也可以详细记录所有必要信息。不仅如此,日志内容除了支持文本

  

也能记录json格式和xml格式数据。实际上nginx日志有助于您了解服务器流量,客户端使用情况和客户端来源等信息。此外,访问日志还可以帮助您定位与上游服务器或特定uri相关的响应和问题;对于测试来讲,访问日志同样有用,它可以用于分析流量情况,模拟真实的用户交互场景。日志在故障排除,调试,应用分析及业务调整中作用是不可或缺的。

  


  

Nginx日志自定义记录以及启用日志缓冲区详解