天天看點

Linux系統下的Nginx的日志設定

(本文内所有centos的系統指令使用斜杠加粗的形式表示,友善各位閱讀)

我想不少人跟我一樣,在最開始接觸Linux的時候,從心底是很反感的,明明放着windows那麼圖文并茂的系統不用,偏偏要搞這個黑乎乎的系統界面,總覺得有一種重返DOS的感覺。而且最重要的是,Windows的配置是在軟體界面裡,對着配置的地方點點滑鼠或者選擇一下位址欄等等,比較容易上手。而且windows的編輯界面都支援ctrl+z這個撤銷指令,要是一些配置不小心被自己碰了,隻要不關界面大不了就ctrl+z就能還原成原始的樣子,不能進步咱還至少能保持不變。而linux的逆操作指令基本是沒有,指令行界面下的檔案删除了那就删除了,把檔案mv到了自己記不住的地方,一旦history找不到這條指令,那基本沒法搶救了,是以再這樣的操作環境裡工作難免總給人一種獨木橋上走路的感覺。

By the way,shell的逆操作雖然基本沒有,但是vim的逆操作還是有的。esc後按u,就是可以撤銷一次操作,隻要不關閉和儲存,按u可以一直按到檔案初始狀态,如果你想把用u撤銷的東西還原回來,那就ctrl+r。

言歸正傳,這次的内容全是配置,依舊是各種nginx的基本配置,而且基本都是在vim下操作的,一旦把初始的.conf檔案改了,就u回原來的樣子。

日志配置

日志是一個很重要的玩意兒,維護人員要根據日志來反推之前的操作,而且必要的時候需要把日志檔案輸出。nginx的日志配置路徑還是在nginx檔案下的/conf/nginx.conf檔案裡,vim一下。然後定位log-format那一行,如圖。

<a href="http://s5.51cto.com/wyfs02/M01/79/C0/wKiom1aaVO2gRkFJAABQmrFpph0899.png" target="_blank"></a>

紅色内容就是日志配置,上面的server_token是安全令牌,防止機器人刷要求的,這裡說一下log_format裡面每一項的意義:

$remote_addr:用戶端的位址

$remote_user[$time_local]:用戶端的姓名[本地的時間]

$request:用戶端所請求的url

$status:請求狀态

$body_bytes_sent:發送給用戶端的位元組數

$http_refere:原網頁,即用戶端是從那個網頁來這裡的

$http_user_agent:用戶端的浏覽器資訊

$http_x_forward_for:用戶端的ip位址

access_log off:目前的日志記錄功能沒開,可以改成on。

日志檔案的記錄資料就是按紅框内的順序記錄的,可以說用戶端的操作都會被日志檔案記錄,但是這樣的話,日志檔案會積壓的越來越多,導緻查詢起來很不容易,那麼就需要自動切割日志檔案。

假如說希望每天的23點59分希望可以切割一下日志檔案,即把當天的日志儲存成日期名字,然後同時開啟一個新的日志檔案來儲存新的一天日志。這樣我們要在/logs/目錄下建立一個批處理檔案,起名叫cutlog.sh,然後vim了它,進行編輯,如圖:

但是如果你事前沒有用過crontab的話,系統會報錯,提示crontab:command not found,可是#man crontab,卻是有結果的。這裡我們就需要安裝crond子產品。

#yum -install -y vixie-cron

此時出現安裝過程,安裝完成後,#chkconfig --list crond,檢測是否是開機即啟動,然後在#service crond start.這樣就可以使用crontab了。

#crontab -e,這時會出現一個shell,我們輸入“23 59 *** /bin/bash /usr/local/nginx/logs/cutlog.sh”,然後儲存退出的時候,系統會确認時間格式,如果時間格式不對,會提示無法建立相關檔案。我們按n就行,按y的話,就是傳回繼續編輯。

至此,自動切割日志檔案的過程就到此結束了,效果就是在/usr/local/nginx/logs/cutlog.sh路徑下每天都會生成一個當天日期命名的檔案來記錄伺服器的日志。

 本文轉自 蘇幕遮618 51CTO部落格,原文連結:http://blog.51cto.com/chenx1242/1735704