nginx log_format用来设置nginx请求日志纪录格式

nginx.conf

  1. # 添加$request_body参数
  2. log_format log_format_name_1 '$remote_addr - $remote_user [$time_local] "$request" '
  3. '$status $body_bytes_sent "$http_referer" '
  4. '"$http_user_agent" "$http_x_forwarded_for"'
  5. '"$request_body" $request_time $upstream_response_time';
  6. # json 格式,用于日志监听处理,可filebeat 监听日志记录到redis
  7. log_format json '{"@timestamp":"$time_local","client":"$remote_addr","domain":"$host","host":"$server_addr","method":"$request_method","request_url":"$request_uri",'
  8. '"url":"$uri","status":"$status","scheme":"$scheme","http_version":"$server_protocol",'
  9. '"size":"$body_bytes_sent","request_body":"$request_body","ua": "$http_user_agent","referer": "$http_referer",'
  10. '"http_x_forwarded_for":"$http_x_forwarded_for","request_time":"$request_time","upstream_response_time":"$upstream_response_time"}';

./vhost/*.conf

# 注意一定要在后面带日志格式名称
access_log  /alidata/log/nginx/*.access.log log_format_name_1;

参数说明

$remote_addr #记录访问网站的客户端ip地址

$remote_port # 客户端的port

$remote_user # 如果nginx有配置认证,该变量代表客户端认证的用户名

$time_local #记录访问时间与时区

$request #用户的http请求起始行信息,包括方法名、请求地址、http版本

$status #http状态码,记录请求返回的状态码,例如:200、301、404等

$body_bytes_sent #服务器发送给客户端的响应body字节数

$http_referer #记录此次请求是从哪个连接访问过来的,可以根据该参数进行防盗链设置。

$http_user_agent #记录客户端访问信息,例如:浏览器、手机客户端等

$http_x_forwarded_for #当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置

$request_body # post上传的数据

$request_time # 整个请求的总时间

$upstream_response_time # 请求过程中,和php-fpm的交互时间

$args # 请求中的参数,如www.123.com/1.php?a=1&b=2的$args就是a=1&b=2

$content_length # HTTP请求信息里的”Content-Length”

$conten_type # HTTP请求信息里的”Content-Type”

$document_root # nginx虚拟主机配置文件中的root参数对应的值

$document_uri 或 $uri # 当前请求中不包含指令的URI,如www.123.com/1.php?a=1&b=2的$document_uri就是1.php,不包含后面的参数

$request_uri # 请求的链接,包括和args

$host # 主机头,也就是域名

$http_cookie # 客户端的cookie信息

$request_body_file # 做反向代理时发给后端服务器的本地资源的名称

$request_method # 请求资源的方式,GET/PUT/DELETE等

$request_filename # 当前请求的资源文件的路径名称,相当于是document_uri的组合

$scheme # 请求的协议,如ftp,http,https

$server_protocol # 客户端请求资源使用的协议的版本,如HTTP/1.0,HTTP/1.1,HTTP/2.0等

$server_addr # 服务器IP地址

$server_name # 服务器的主机名

$server_port # 服务器的端口号