nginx訪問(wèn)日志并刪除指定天數(shù)前的日志記錄配置方法
說(shuō)明:
操作系統(tǒng):CentOS
站點(diǎn)1:bbs.jb51.net
站點(diǎn)2:sns.jb51.net
Nginx安裝路徑:/usr/local/nginx
Nginx配置文件路徑:/usr/local/nginx/conf/nginx.conf
站點(diǎn)1配置文件路徑:/usr/local/nginx/conf/vhost/bbs.jb51.net.conf
站點(diǎn)2配置文件路徑:/usr/local/nginx/conf/vhost/sns.jb51.net.conf
目的:
1、對(duì)站點(diǎn)1和站點(diǎn)2的nginx訪問(wèn)日志按天保存,日志路徑為:
站點(diǎn)1:/usr/local/nginx/logs/nginx_logs/bbs_logs
站點(diǎn)2:/usr/local/nginx/logs/nginx_logs/sns_logs
2、只保留30天以?xún)?nèi)的日志記錄
具體操作:
1、創(chuàng)建日志存放路徑
mkdir -p /usr/local/nginx/logs/nginx_logs/bbs_logs
mkdir -p /usr/local/nginx/logs/nginx_logs/sns_logs
2、設(shè)置Nginx日志記錄格式
編輯vi /usr/local/nginx/conf/nginx.conf
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
取消日志記錄格式前面的注釋?zhuān)谧詈筇砑右恍?,如下所示?BR>
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'$http_host $upstream_status $upstream_addr $request_time $upstream_response_time'; #新添加的一行
:wq! #保存退出
3、設(shè)置虛擬主機(jī)配置文件
編輯vi /usr/local/nginx/conf/vhost/bbs.jb51.net.conf #,在bbs.jb51.net;這一行下面添加
access_log logs/bbs_access.log main; #注意這里的main要和上一步中的main一致
:wq! #保存退出
編輯vi /usr/local/nginx/conf/vhost/sns.jb51.net.conf ,在sns.jb51.net;這一行下面添加
access_log logs/sns_access.log main; #注意這里的main要和上一步中的main一致
:wq! #保存退出
service nginx reload #重新加載nginx配置文件
4、創(chuàng)建Nginx日志切割腳本
編輯vi /home/crontab/cut_nginx_log.sh
#!/bin/sh
logs_path="/usr/local/nginx/logs/"
DAYS=30
mv ${logs_path}bbs_access.log ${logs_path}nginx_logs/bbs_logs/bbs_access_$(date -d "yesterday" +"%Y%m%d").log
mv ${logs_path}sns_access.log ${logs_path}nginx_logs/sns_logs/sns_access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
find ${logs_path}nginx_logs/bbs_logs/ -name "bbs_access_*" -type f -mtime +$DAYS -exec rm {} \;
find ${logs_path}nginx_logs/sns_logs/ -name "sns_access_*" -type f -mtime +$DAYS -exec rm {} \;
:wq! #保存退出
chmod +x /home/crontab/cut_nginx_log.sh #添加腳本執(zhí)行權(quán)限
5、添加任務(wù)計(jì)劃,修改/etc/crontab
vi /etc/crontab在最后一行添加
0 0 * * * root /home/crontab/cut_nginx_log.sh #表示每天凌晨執(zhí)行
:wq! #保存退出
6、重新啟動(dòng)crond使設(shè)置生效
/etc/rc.d/init.d/crond restart #yum install -y vixie-cron安裝計(jì)劃任務(wù),某些系統(tǒng)上可能沒(méi)有預(yù)裝
chkconfig crond on #設(shè)為開(kāi)機(jī)啟動(dòng)
service crond start #啟動(dòng)
每天會(huì)在/usr/local/nginx/logs/nginx_logs/bbs_logs和/usr/local/nginx/logs/nginx_logs/sns_logs
目錄下生成類(lèi)似bbs_access_20140126.log和bbs_access_20140126.log的日志文件
并且只保留最近30天的日志記錄
至此,Linux下定時(shí)切割Nginx訪問(wèn)日志并刪除指定天數(shù)前的日志記錄完成。
備注:如果腳本在執(zhí)行過(guò)程中出現(xiàn)下面錯(cuò)誤
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed
解決辦法:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#使用nginx -c的參數(shù)指定nginx.conf文件的位置
擴(kuò)展閱讀:Nginx訪問(wèn)日志參數(shù)說(shuō)明
192.168.21.1 - - [27/Jan/2014:11:28:53 +0800] "GET /2.php HTTP/1.1" 200 133 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1707.0 Safari/537.36" "-"192.168.21.128 200 127.0.0.1:9000 0.119 0.119
$remote_addr:客戶(hù)端地址 192.168.21.1
$remote_user:客戶(hù)端用戶(hù) -
$time_local:時(shí)間和時(shí)區(qū) 27/Jan/2014:11:28:53 +0800
$request:請(qǐng)求的URL路徑和HTTP協(xié)議 GET /2.php HTTP/1.1
$status: HTTP狀態(tài) 200
$body_bytes_sent:發(fā)送給客戶(hù)端頁(yè)面大小 133
$http_referer:頁(yè)面跳轉(zhuǎn)來(lái)源 -
$http_user_agent:用戶(hù)訪問(wèn)終端 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1707.0 Safari/537.36
$http_x_forwarded_for:HTTP 代理中,請(qǐng)求端真實(shí)IP -
$http_host:用戶(hù)在瀏覽器中輸入的URL(IP或著域名)地址 192.168.21.128
$upstream_status: upstream狀態(tài) 200
$upstream_addr: 后端upstream地址及端口 127.0.0.1:9000
$request_time: 頁(yè)面訪問(wèn)總時(shí)間 0.119
$upstream_response_time:頁(yè)面訪問(wèn)中upstream響應(yīng)時(shí)間 0.119
- 利用nginx訪問(wèn)日志如何記錄mysql中的用戶(hù)id詳解
- Nginx自定義訪問(wèn)日志的配置方式
- Nginx日志實(shí)現(xiàn)訪問(wèn)異常報(bào)警詳解
- centos中nginx按日期自動(dòng)分割訪問(wèn)日志的方法
- Nginx實(shí)現(xiàn)瀏覽器可實(shí)時(shí)查看訪問(wèn)日志的步驟詳解
- Nginx屏蔽F5心跳日志、指定IP訪問(wèn)日志
- Python 分析Nginx訪問(wèn)日志并保存到MySQL數(shù)據(jù)庫(kù)實(shí)例
- shell腳本分析 nginx日志訪問(wèn)次數(shù)最多及最耗時(shí)的頁(yè)面(慢查詢(xún))
- Nginx訪問(wèn)日志及錯(cuò)誤日志參數(shù)說(shuō)明
相關(guān)文章
nginx ServerName匹配規(guī)則實(shí)現(xiàn)
本文主要介紹了nginx ServerName匹配規(guī)則實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2007-02-02
在Linux系統(tǒng)中將Redmine和SVN整合入Nginx的方法
這篇文章主要介紹了在Linux系統(tǒng)中將Redmine和SVN整合入Nginx的方法,示例基于CentOS系統(tǒng),并用到了Ruby腳本,需要的朋友可以參考下2015-06-06
Nginx負(fù)載均衡以及動(dòng)靜分離的原理與配置
動(dòng)靜分離和負(fù)載均衡都是配置nginx實(shí)現(xiàn)對(duì)請(qǐng)求進(jìn)行操作,所以下面這篇文章主要給大家介紹了關(guān)于Nginx負(fù)載均衡以及動(dòng)靜分離的相關(guān)資料,需要的朋友可以參考下2021-06-06
使用Docker實(shí)現(xiàn)Nginx反向代理
本文主要介紹了使用Docker實(shí)現(xiàn)Nginx反向代理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
隱藏網(wǎng)站Nginx版本號(hào)信息的方法分享
隱藏網(wǎng)站nginx服務(wù)的版本號(hào)信息,在安全的角度上來(lái)說(shuō),可以防止黑客快速利用nginx的版本漏洞進(jìn)行攻擊,所以本文為大家整理了隱藏網(wǎng)站Nginx版本號(hào)信息的方法,希望對(duì)大家有所幫助2023-08-08

