先来看一个实际的配置文件: nginx 日志相关指令主要有两条,log_format,用来设置日志格式,access_log,用来指定日志文件的存放路径、格式和缓存大小1、log_format 格式 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"'注释:$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;$remote_user :用来记录客户端用户名称;$time_local : 用来记录访问时间与时区; $request : 用来记录请求的url与http协议; $request_uri: /stat.php?id=1585378&web_id=1585378 $uri /stat.php $document_uri: /stat.php $status : 用来记录请求状态;成功是200,$body_bytes_s ent :记录发送给客户端文件主体内容大小;$http_referer :用来记录从那个页面链接访问过来的;$http_user_agent :记录客户毒啊浏览器的相关信息; 通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址; log_format mylogformat ' $http_x_forwarded_for- $remote_user [$time_local] ' '"$request" '$status $body_bytes_s ent ' '"$http_referer""$http_user_agent"'; 2、用access_log指令日志文件存放路径; 用了log_format 指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;access_log path(存放路径) format (自定义日志名称)示例: #access_log logs/access.log main;我们用log_format 定义了一个mylogformat的日志 我们可以写成这样access_log logs/access.log mylogformat ; 如果不想启用日志 :access_log off ; 在定义日志目录中要注意的是, 1、nginx进程设置的用户和组必须有对该路径 创建文件的权限,假设nginx的usr指令设置的用户名 和用户组都是www,而logs 目录的用户名和组是root,那么日志文件将无法被创建; 2、一般情况下,如果nginx.conf配置文件里的http里面没设置access_log off;默认是会把所有访问日志输出到/var/log/nginx目录下面,现在要把不同网站的日志区分开来,所以添加了access_log off。 按照之前很多网上的配置方法是在各个虚拟主机配置文件的server段里添加日志格式和日志输出路径,如下
user nobody;# 工作进程的属主
worker_processes 4;# 工作进程数,一般与 CPU 核数等同
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll;#Linux 下性能最好的 event 模式
worker_connections 2048;# 每个工作进程允许最大的同时连接数
}
http {
include mime.types;
default_type application/octet-stream;
#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 off;
access_log logs/access.log;# 日志文件名
sendfile on;
#tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
include
gzip.conf;
# 集群中的所有后台服务器的配置信息
upstream tomcats {
server 192.168.0.11:8080 weight=10;
server 192.168.0.11:8081 weight=10;
server 192.168.0.12:8080 weight=10;
server 192.168.0.12:8081 weight=10;
server 192.168.0.13:8080 weight=10;
server 192.168.0.13:8081 weight=10;
}
server {
listen 80;#HTTP 的端口
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location ~ ^/NginxStatus/ {
stub_status on; #Nginx 状态监控配置
access_log off;
}
location ~ ^/(WEB-INF)/ {
deny all;
}
location ~ .(htm|html|asp|php|gif|jpg|jpeg|png|bmp|ico|rar|css|js|
zip|java|jar|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {
root /opt/webapp;
expires 24h;
}
location / {
proxy_pass http://tomcats;# 反向代理
include proxy.conf;
}
error_page 404 /html/404.html;
# redirect server error pages to the static page /50x.html
#
error_page 502 503 /html/502.html;
error_page 500 504 /50x.html;
location = /50x.html {
root html;
}
}
}
log_format access '$remote_addr - $remote_user [$time_local]"$request"'
'$status $body_bytes_sent"$http_referer"'
'"$http_user_agent"$http_x_forwarded_for';
access_log /home/wwwlogs/ddhow.com.log access;
error_log /home/wwwlogs/ddhow.com-error.log;