1、语法:
log_format name(格式名字) 格式样式
示例:
log_format main
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_s ent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
2、X-Forwarded-For:
X-Forwarded-For 是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。
3、X-Real-IP:
通常被 HTTP 代理用来表示与它产生 TCP 连接的设备 IP,这个设备可能是其他代理,也可能是真正的请求端,这个要看经过代理的层级次数或是是否始终将真实IP一路传下来。
server {
listen 80;
server_name _;
location / {
proxy_pass http://127.0.0.1:8000/;
# $host 变量,Host 为变量名
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
4、设置刷盘策略:
access_log /data/logs/nginx-access.log buffer=32k flush=5s;
#buffer 满 32k 才刷盘;假如 buffer 不满 5s 钟强制刷盘。
5、要记录更详细的信息需要自己修改log_format,具体可设置的参数格式及说明如下:
参数 | 说明 | 示例 |
$remote_addr | 客户端地址 | 219.227.111.255 |
$remote_user | 客户端用户名称 | — |
$time_local | 访问时间和时区 | 18/Jul/2014:17:00:01 +0800 |
$request | 请求的URI和HTTP协议 | “GET /article-10000.html HTTP/1.1” |
$http_host | 请求地址,即浏览器中你输入的地址(IP或域名) | www.ha97.com 198.98.120.87 |
$status | HTTP请求状态 | 200 |
$upstream_status | upstream状态 | 200 |
$body_bytes_sent | 发送给客户端文件内容大小 | 1547 |
$http_referer | url跳转来源 | www.huashansong.com |
$http_user_agent | 用户终端浏览器等信息 | “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C; |
$ssl_protocol | SSL协议版本 | TLSv1 |
$ssl_cipher | 交换数据中的算法 | RC4-SHA |
$upstream_addr | 后台upstream的地址,即真正提供服务的主机地址 | 10.36.10.80:80 |
$request_time | 整个请求的总时间 | 0.165 |
$upstream_response_time | 请求过程中,upstream响应时间 | 0.002 |