Nginx日志
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; } }
支持写在http{} server{}下,跟单独设置日志机制相互作用 # error_page 响应状态码 相对路径的html文件/ 填入url ; error_page 404 /404.html; #支持静态文件以及URL error_page 500 502 503 504 /50x.html; #支持静态文件以及URL