内置变量
$remote_addr;存放了客户端的地址,注意是客户端的公网IP,也就是一家人访问一个网站,则会显示为路由器的公网IP。
$args;变量中存放了URL中的指令
[root@localhost conf.d]# cat pc.conf 
server {
  listen 80;
  server_name www.fxq.com;
  location / {
     root /data/nginx/html/pc;
     index index.html;
  }
  location /m78 {
    default_type text/html;
    echo $remote_addr;
    echo $args;
 }  
} 
 
我这边电脑与服务器之间的网段做了路由,显示了网关
$document_root; 保存了针对当前资源的请求的系统根目录
$document_uri; 保存了当前请求中不包含指令的URI
[root@localhost conf.d]# cat pc.conf 
server {
  listen 80;
  server_name www.fxq.com;
  location / {
     root /data/nginx/html/pc;
     index index.html;
  }
  location /m78 {
    root /data/nginx/html/pc;
    default_type text/html;
    echo $document_root; 
    echo $document_uri;
 }  
} 


$host; 存放了请求的host名称
$http_user_agent; 客户端浏览器的详细信息
$http_cookie;客户端的cookie信息。
[root@localhost conf.d]# cat pc.conf 
server {
  listen 80;
  server_name www.fxq.com;
  location / {
     root /data/nginx/html/pc;
     index index.html;
  }
  location /m78 {
    root /data/nginx/html/pc;
    default_type text/html;
    echo  $host;
    echo  $http_user_agent;
    echo  $http_cookie;
 }  
} 

limit_rate 10240;
echo $limit_rate;如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0
$remote_user; 已经过Auth Basic Module验证的用户名。
$request_body_file;做反向代理时发给后端服务器的本地资源的名称。
$request_method;请求资源的方式,GET/PUT/DELETE等
$request_filename;当前请求的资源文件的路径名称,由root或alias指令与URI请求生成的文件绝对路径
$request_uri;包含请求参数的原始URI,不包含主机名
$scheme;请求的协议,如ftp,https,http等;
$server_protocol;保存了客户端请求资源使用的协议的版本,如HTTP/1.0,HTTP/1.1,HTTP/2.0等
$server_addr;保存了服务器的IP地址;
$server_name;请求的服务器的主机名。
$server_port;请求的服务器的端口号。
自定义变量
使用set自定义变量
[root@localhost conf.d]# cat pc.conf 
server {
  listen 80;
  server_name www.fxq.com;
  location / {
     root /data/nginx/html/pc;
     index index.html;
  }
  location /m78 {
    root /data/nginx/html/pc;
    default_type text/html;
    set $name fxq;
    echo $name;
}  
} 
 
日志格式
默认格式
自定义json格式
    log_format access_json '{"@timestamp":"$time_iso8601",'
        '"host":"$server_addr",'
        '"clientip":"$remote_addr",'
        '"size":$body_bytes_sent,'
        '"responsetime":$request_time,'
        '"upstreamtime":"$upstream_response_time",'
        '"upstreamhost":"$upstream_addr",'
        '"http_host":"$host",'
        '"uri":"$uri",'
        '"domain":"$host",'
        '"xff":"$http_x_forwarded_for",'
        '"referer":"$http_referer",'
        '"tcp_xff":"$proxy_protocol_addr",'
        '"http_user_agent":"$http_user_agent",'
        '"status":"$status"}';
    access_log  logs/access.log  access_json; 

python日志收集
#!/usr/bin/env python
#coding: utf-8 
status_200=[]
status_404=[]
with open("/apps/nginx/logs/access.log") as f:
    for line in f.readlines():
        line = eval(line)
        if line.get("status") == "200":
            status_200.append(line.get)
        elif line.get("status") == "404":
            status_404.append(line.get)
        else:
            print("状态码 ERROR")
f.close()
print "状态码200的有--:",len(status_200)
print "状态码404的有--:",len(status_404) 
                
                                              




















