一. nginx.conf中 http 加入如下配置linux
access_log on; log_format main '$remote_addr - [$time_local] ' '$upstream_addr $request_time $upstream_response_time ' '$http_host $request' '"$status" $body_bytes_sent "$http_user_agent"'; access_log /data/nginx_log/access.log main;
$remote_addr, $http_x_forwarded_for 記錄客戶端IP地址nginx
二.shell
nginx的日誌文件沒有rotate功能。編寫天天生成一個日誌,咱們能夠寫一個nginx日誌切割腳原本自動切割日誌文件。瀏覽器
第一步就是重命名日誌文件,不用擔憂重命名後nginx找不到日誌文件而丟失日誌。在你未從新打開原名字的日誌文件前,nginx仍是會向你重命名的文件寫日誌,Linux是靠文件描述符而不是文件名定位文件。bash
第二步向nginx主進程發送USR1信號。nginx主進程接到信號後會從配置文件中讀取日誌文件名稱,從新打開日誌文件(以配置文件中的日誌名稱命名),並以工做進程的用戶做爲日誌文件的全部者。從新打開日誌文件後,nginx主進程會關閉重名的日誌文件並通知工做進程使用新打開的日誌文件。工做進程馬上打開新的日誌文件並關閉重名名的日誌文件。而後你就能夠處理舊的日誌文件了。[或者重啓nginx服務]。spa
nginx日誌按每分鐘自動切割腳本以下:.net
新建shell腳本:vi/usr/local/software/nginx/nginx_log.sh日誌
#!/bin/bash #設置日誌文件存放目錄 LOG_HOME="/usr/local/software/nginx/logs/" #備分文件名稱 LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)".abc.access.log #重命名日誌文件 mv ${LOG_HOME}/abc.access.log ${LOG_HOME}/${LOG_PATH_BAK}.log #向nginx主進程發信號從新打開日誌 kill -USR1 `cat /usr/local/software/nginx/logs/nginx.pid`天天凌晨執行以上腳本