nginx 日誌相關指令主要有兩條,一條是log_format,用來設定日誌格式,另外一條是access_log,用來指定日誌檔案的存放路徑、格式和快取大小,通俗的理解就是先用log_format來定義自己想用的日誌格式,然後在用access_log定義虛擬主機時或全域性日誌時 在把定義的log_format 跟在後面;
1、log_format 格式
log_format name( 格式名字) 格式樣式(即想要得到什麼樣的日誌內容)
預設的示例:
與 http_x_forwarded_for 用以記錄客戶端的ip位址;
$remote_user :用來記錄客戶端使用者名稱;
$time_local : 用來記錄當前的訪問時間與請求的日誌時間;
$request : 用來記錄請求的url與http協議;
$status : 用來記錄請求狀態;成功是200,
$body_bytes_s ent :記錄傳送給客戶端檔案主體內容大小位元組數;
通常web伺服器放在反向**的後面,這樣就不能獲取到客戶的ip位址了,通過$remote_add拿到的ip位址是反向**伺服器的ip位址。反向**伺服器在**請求的http頭資訊中,可以增加x_forwarded_for資訊,用以記錄原有客戶端的ip位址和原來客戶端的請求的伺服器位址;
上面這個是漲宴老師的日誌例子;
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 ;
在定義日誌目錄中要注意的是,nginx程序設定的使用者和組必須有對該路徑 建立檔案的許可權,假設nginx的usr指令設定的使用者名稱 和使用者組都是www,而logs 目錄的使用者名稱和組是root,那麼日誌檔案將無法被建立;
3、nginx日誌檔案的切割:
[root@mgmserver logs]# ll
總計 48
-rw-r--r-- 1 root root 1891
09-02
14:59
192.168
.0.28
.access
.log
-rw-r--r-- 1 root root 531
09-02
13:52
192.168
.0.37
.access
.log
-rw-r--r-- 1 root root 531
09-02
13:52
192.168
.0.38
.access
.log
[root@mgmserver logs]# mv 192.168.0.28.access.log /tmp/nginx.28.log
[root@mgmserver logs]# kill -usr1 `cat /usr/local/nginx/logs/nginx.pid `
[root@mgmserver logs]# ll
總計 36
-rw-r--r-- 1 nginx root 0
09-02
15:05
192.168
.0.28
.access
.log
-rw-r--r-- 1 nginx root 531
09-02
13:52
192.168
.0.37
.access
.log
-rw-r--r-- 1 nginx root 531
09-02
13:52
192.168
.0.38
.access
.log
先把日誌拷貝出來,然後想nginx傳送訊號 ,讓nginx重新生成乙個日誌檔案;
4、nginx的壓縮輸出配置
nginx的壓縮輸出由一組壓縮指令來實現,gzip的壓縮輸出位於http 兩個大括號之間;
5、nginx自動列目錄配置;
可以在 某一虛擬主機的location /
目錄中配置自動列目錄,加上下面**:
autoindex on
; autoindex_exact_size [on
|off] #設定索引時檔案大小的單位
autoindex_localtime [on
|off ] #開啟以本地時間來顯示檔案時間的功能,預設為關
cat /opt/logs/nginx/access.log | awk '' 輸出所有ip
cat /opt/logs/nginx/access.log | awk ''|sort | uniq -c 排序並把相同的ip取出來
cat /opt/logs/nginx/access.log | awk ''|sort | uniq -c | sort -rn |more 由大到小排列所有的ip
取出所有的狀態碼
cat /opt/logs/nginx/access.log | grep -ioe "http\/1\.[1|0]\"[[:blank:]][0-9]"
下面介紹乙個分析http狀態碼在不同區間的請求條數的指令碼:
分析日誌中http狀態碼為404,500的請求條數
46行忘記閉合了。注意
Shell指令碼典型應用
一 指令碼場景 二 實現指令碼 1 主控指令碼實現 2 系統資訊及系統狀態分析 3 nginx和mysql應用狀態分析 4 應用日誌分析 三 場景指令碼演示 四 該指令碼學習意義 1 明白shell使用用途 不懂shell能在我們的op工作中起到什麼作用,能做什麼?2 明白shell使用特性 只是侷...
shell的典型應用 shell的高亮顯示
基本格式 echo e 終端顏色 顯示的內容 結束後的顏色 例項 1 echo e e 1 66m i am handsome e 1 0m 其中 e 1 66m中的1表示設定終端顏色,如果為0則不設定終端顏色 2 echo e e 1 66m i am handsome tput sgr0 tpu...
shell 十 case的幾個典型應用
一 說明 case語句專門寫服務的 啟動指令碼的 二 案例 多種方式 rhel7的systemed的管理方式和rhel6的 etc init.d的管理方式 注意 對於既沒有通過systemd管理的,並且也沒有提供可以放到 etc init.d 下的啟動指令碼,就需要自己手動完成了!1 開發nginx...