nginx.conf中有关访客日志定义如下

#log_format #创建日志格式,名为main
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
 '$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

#access_log #设置日志格式为main
access_log logs/access.log main;  

参数解释

$remote_addr :记录访问网站的客户端IP地址
$remote_user :记录远程客户端用户名称
$time_local :记录访问时间与时区
$request :记录用户的 http 请求起始行信息(请求方法,http协议)
$status :记录 http 状态码,即请求返回的状态,例如 200 、404 、502 等
$body_bytes_sent :记录服务器发送给客户端的响应 body 字节数
$http_referer :记录此次请求是从哪个链接访问过来的,可以根据 referer 进行防盗链设置
$http_user_agent :记录客户端访问信息,如浏览器、手机客户端等
$http_x_forwarded_for :当前端有代理服务器时,设置 Web 节点记录客户端地址的配置,此参数生效的前提是代理服务器上也进行了相关的 x_forwarded_for 设置

备注:
$remote_addr 可能拿到的是反向代理IP地址
$http_x_forwarded_for 可以获取客户端真实IP地址

 

#当你的nginx访客日志,需要记录更多的client请求信息,你可以来这里找,添加更多的变量,加入到如下的日志格式化参数中

https://nginx.org/en/docs/

https://nginx.org/en/docs/http/ngx_http_core_module.html#var_remote_addr

 

关闭日志功能

有时候在代理服务器上,转发服务器上,nginx日志可能不用记录,节省磁盘IO的资源
http {

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  /var/log/nginx/access.log  main; #注释设置日志
    access_log off;  #关闭日志

}

 单个虚拟机,独立设置日志

写在各自的虚拟主机的配置文件中:
# log_format 这个参数和server{}平级
# 创建的日志格式名每个虚拟主机都要不同,也不能跟主配置文件的相同
# [main2]日志格式名不能带符号
log_format  main2  '$document_uri  $remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
server {
    # 开启日志功能,以及存放路径,access_log参数写在server{}内
    access_log  /var/log/nginx/dnf.linux0224.cc.access.log  main2;
    listen 80;
    server_name dnf.linux0224.cc; # 这里写的是域名
    
    charset utf-8;
    location /  {
        root  /www/dnf/;
        index  index.html;
    }

}

#单独设置日志后,nginx.conf配置文件的日志设置就不对此生效了,其他没有单独设置日志的虚拟主机依然生效

错误日志

开启error级别的错误日志
# 单独给的虚拟主机设置错误日志,eroor级别 ,配置如下 # 支持写入http{} server{} log_format main2
'$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; server { access_log /var/log/nginx/lol.linux0224.cc.access.log main2; error_log /var/log/nginx/lol-error.log error; #设置error级别日志保存的文件路径    listen 80; server_name lol.linux0224.cc; charset utf-8; location / { root /www/lol/; index index.html; } }

错误页面优化,error_page模块

支持写在http{} server{}下,跟单独设置日志机制相互作用
# error_page  响应状态码    相对路径的html文件/ 填入url ; 

error_page 404             /404.html;  #支持静态文件以及URL
error_page 500 502 503 504 /50x.html; #支持静态文件以及URL