一、虚拟主机配置
server {
listen 8080; #端口
server_name 192.168.1.204; #域名
location / {
root /var/www/html; #根目录
index index.html;
access_log logs/proxy.access.log main;
}
}
二、日志管理
1.1日志的引用
access_log 日志路径log格式;
默认使用的日志格式:main
Nginx允许针对不同的server做不同的Log
1.2日志的定义
log_format log 格式 '配置规则';
日志格式设置:
$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url与http协议;
$status: 用来记录请求状态;成功是200,
$body_bytes_sent :记录发送给客户端文件主体内容大小;
$http_referer:用来记录从那个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息
$remote_user:用来记录客户端用户名称;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url与http协议;
$status: 用来记录请求状态;成功是200,
$body_bytes_sent :记录发送给客户端文件主体内容大小;
$http_referer:用来记录从那个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息
例如:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
1.3实际应用:shell+定时任务+nginx信号管理,完成日志按日期存储
1、分析思路:
凌晨00:00:01,把昨天的日志重命名,放在相应的目录下
再USR1信息号控制nginx重新生成新的日志文件
2、具体脚本:
base_path='/usr/local/nginx/logs'
log_path=$(date -d yesterday +"%Y%m")
day=$(date -d yesterday +"%d")
mkdir -p $base_path/$log_path
mv $base_path/access.log $base_path/$log_path/access_$day.log
#echo $base_path/$log_path/access_$day.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
3、定时任务:
01 00 * * * /xxx/path/b.sh 每天0时1分(建议在02-04点之间,系统负载小)