通過修改原始碼來更改nginx的日期格式

2021-06-12 23:05:36 字數 2671 閱讀 9134

群裡有朋友想切換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...