nginx 使用

1、日誌配置

默認#access_log  logs/host.access.log  main;是被註釋的,

日誌會放在logs/access.log。當然也可以設置路徑和名稱。

如果有多個server配置,可以每個配不同的日誌

2、日誌格式

通過log_format 來配置

參考(http://blog.chinaunix.net/uid-20104120-id-4089993.html)

     Nginx日誌主要分爲兩種:訪問日誌和錯誤日誌。日誌開關在Nginx配置文件(/etc/nginx/nginx.conf)中設置,兩種日誌都可以選擇性關閉,默認都是打開的。
1、訪問日誌
        訪問日誌主要記錄客戶端訪問Nginx的每一個請求,格式可以自定義。通過訪問日誌,你可以得到用戶地域來源、跳轉來源、使用終端、某個URL訪問量等相關信息。Nginx中訪問日誌相關指令主要有兩條:
        (1)log_format
        log_format用來設置日誌格式,也就是日誌文件中每條日誌的格式,具體如下:
        log_format name(格式名稱) type(格式樣式)
        舉例說明如下:
        log_format  main  '$server_name $remote_addr - $remote_user [$time_local] "$request" '
                        '$status $uptream_status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for" '
                        '
$ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time
';
        上面紅色部分爲Nginx默認指定的格式樣式,每個樣式的含義如下:
        $server_name:虛擬主機名稱。
        $remote_addr:遠程客戶端的IP地址。
        -:空白,用一個“-”佔位符替代,歷史原因導致還存在。
        $remote_user:遠程客戶端用戶名稱,用於記錄瀏覽者進行身份驗證時提供的名字,如登錄百度的用戶名scq2099yt,如果沒有登錄就是空白。
        [$time_local]:訪問的時間與時區,比如18/Jul/2012:17:00:01 +0800,時間信息最後的"+0800"表示服務器所處時區位於UTC之後的8小時。
        $request:請求的URI和HTTP協議,這是整個PV日誌記錄中最有用的信息,記錄服務器收到一個什麼樣的請求
        $status:記錄請求返回的http狀態碼,比如成功是200。
        $uptream_status:upstream狀態,比如成功是200.
        $body_bytes_sent:發送給客戶端的文件主體內容的大小,比如899,可以將日誌每條記錄中的這個值累加起來以粗略估計服務器吞吐量。
        $http_referer:記錄從哪個頁面鏈接訪問過來的。 
        $http_user_agent:客戶端瀏覽器信息
        $http_x_forwarded_for:客戶端的真實ip,通常web服務器放在反向代理的後面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理服務器的iP地址。反向代理服務器在轉發請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務器地址。
        $ssl_protocol:SSL協議版本,比如TLSv1。
        $ssl_cipher:交換數據中的算法,比如RC4-SHA。 
        $upstream_addr:upstream的地址,即真正提供服務的主機地址。
 
        $request_time:整個請求的總時間。 
        $upstream_response_time
:請求過程中,upstream的響應時間。
        訪問日誌中一個典型的記錄如下:
        192.168.1.102 - scq2099yt [18/Mar/2013:23:30:42 +0800] "GET /stats/awstats.pl?config=scq2099yt HTTP/1.1" 200 899 "http://192.168.1.1/pv/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows XXX; Maxthon)"
        需要注意的是:log_format配置必須放在http內,否則會出現如下警告信息:
        nginx: [warn] the "log_format" directive may be used only on "http" level in /etc/nginx/nginx.conf:97
        (2)access_log
        access_log指令用來指定日誌文件的存放路徑(包含日誌文件名)、格式和緩存大小,具體如下:
        access_log path(存放路徑) [format(自定義日誌格式名稱) [buffer=size | off]]
        舉例說明如下:
        access_log  logs/access.log  main;
        如果想關閉日誌,可以如下:
        access_log off;
        能夠使用access_log指令的字段包括:http、server、location。
        需要注意的是:Nginx進程設置的用戶和組必須對日誌路徑有創建文件的權限,否則,會報錯。
        小技巧:如果需要在access_log中記錄post請求的參數,可以參考這裏
        Nginx支持爲每個location指定強大的日誌記錄。同樣的連接可以在同一時間輸出到不止一個的日誌中,更多信息請查看這裏這裏,還有這裏
2、錯誤日誌
        錯誤日誌主要記錄客戶端訪問Nginx出錯時的日誌,格式不支持自定義。通過錯誤日誌,你可以得到系統某個服務或server的性能瓶頸等。因此,將日誌好好利用,你可以得到很多有價值的信息。錯誤日誌由指令error_log來指定,具體格式如下:
        error_log path(存放路徑) level(日誌等級)
        path含義同access_log,level表示日誌等級,具體如下:
        [ debug | info | notice | warn | error | crit ]
        從左至右,日誌詳細程度逐級遞減,即debug最詳細,crit最少。
        舉例說明如下:
        error_log  logs/error.log  info;
        需要注意的是:error_log off並不能關閉錯誤日誌,而是會將錯誤日誌記錄到一個文件名爲off的文件中。
        正確的關閉錯誤日誌記錄功能的方法如下:
        error_log /dev/null;
        上面表示將存儲日誌的路徑設置爲“垃圾桶”。
        
二、日誌管理
        新版本Nginx支持自動切割並壓縮日誌,日誌文件名如下:
        access.log
        access.log.1
        access.log.2.gz
        access.log.3.gz
        error.log
        error.log.1
        error.log.2.gz
        error.log.3.gz
        默認是每天都會產生一個.gz文件。
        如果默認切割不滿足你的需求,你也可以用其它的方式,比如:這裏,還有這裏

(http://www.cnblogs.com/amboyna/archive/2009/08/09/1542171.html)

3、負載配置

nginx 的 upstream默認是以輪詢的方式實現負載均衡,這種方式中,每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除。

另外一種方式是ip_hash:每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題。 

發佈了152 篇原創文章 · 獲贊 4 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章