群裡有朋友想切換nginx 0.7的版本到1.2+的版本,在0.7的版本中他們改了原始碼,使得訪問日誌輸出的時間格式從[08/mar/2013:09:30:58 +0800]變成了2013-03-08 12:21:03。說是在修改1.2+版本的時候格式就變亂了,格式一直不對,剛好有人@我,我說就幫忙看下。
nginx log日誌格式的話,無非是在src/core/nginx_times.c和src/http/modules/ngx_http_log_module.c 這兩個檔案中做修改。
nginx.conf 的預設日誌格式中的時間格式使用$time_local去指定的,這是刷到acces.log中的時間格式是[08/mar/2013:09:30:58 +0800]
一.去下了個目前最新穩定版
nginx-1.2.7 ,開啟nginx_http_log_module.c 查詢到time_local,可以看到
,
{ ngx_string("time_iso8601"), sizeof("1970-09-28t12:00:00+06:00") - 1,
在1.2.7版本中有個time_iso8601的變數,和目標格式很接近了,
更改1:
{ ngx_string("time_iso8601"), sizeof("1970-09-28t12:00:00+06:00") - 1,
=》{ ngx_string("time_iso8601"), sizeof("1970-09-28 12:00:00") - 1,
更改nginx.conf配置為:
重編譯後,啟動,curl "localhost" 看刷log,還是不對。
二.開啟ngx_times.c 查詢 iso8601
看到第一處:
更改2:
[sizeof("1970-09-28t12:00:00+06:00")];
=》[sizeof("1970-09-28 12:00:00")];
看到第二處:
更改2:
看到第三處:
更改3:
(void) ngx_sprintf(p3, "%4d-%02d-%02dt%02d:%02d:%02d%c%02d:%02d",
tm.ngx_tm_year, tm.ngx_tm_mon,
tm.ngx_tm_mday, tm.ngx_tm_hour,
tm.ngx_tm_min, tm.ngx_tm_sec,
tp->gmtoff < 0 ? '-' : '+',
ngx_abs(tp->gmtoff / 60), ngx_abs(tp->gmtoff % 60));
=》(void) ngx_sprintf(p3, "%4d-%02d-%02d %02d:%02d:%02d",
tm.ngx_tm_year, tm.ngx_tm_mon,
tm.ngx_tm_mday, tm.ngx_tm_hour,
tm.ngx_tm_min, tm.ngx_tm_sec);
ok,重新編譯,啟動,curl "localhost",檢視acees.log 就可以看到
127.0.0.1 - - 2013-03-08 12:21:03 "get / http/1.1" 200 612 總結
一般很少去改動nginx原始碼,基本做開發也只是做nginx的http模組,這也是難得一次經驗,還比較順利。
Nginx更改原始碼隱藏軟體名稱
使用yum版本安裝的話,你是不能來隱藏我們的軟體名稱的,但是版本號是可以隱藏的!一般來說修改3個位置,乙個是nginx.h 另乙個是ngx http header filter module.c 還有乙個ngx http special response.c。scr core nginx.conf ...
nginx原始碼分析 從原始碼看nginx框架總結
nginx原始碼總結 1 中沒有特別繞特別彆扭的編碼實現,從變數的定義呼叫函式的實現封裝,都非常恰當,比如從函式命名或者變數命名就可以看出來定義的大體意義,函式的基本功能,再好的架構實現在編碼習慣差的人實現也會黯然失色,如果透徹理解 的實現,領悟架構的設計初衷,覺得每塊 就想經過耐心雕琢一樣,不僅僅...
nginx原始碼安裝
nginx原始碼安裝 安裝環境 作業系統 ubuntu 12.04 nginx v1.4.2 pcre v8.33 zlib v1.2.8 1.安裝zlib 1 解壓縮 plain tdtc100 ubuntu tar zxvf zlib 1.2.8.tar.gz 2 安裝 plain tdtc10...