nginx 通過配置檔案配置自定義日期格式

2021-10-17 09:05:09 字數 2355 閱讀 1762

在使用 nginx 列印日誌的時候,預設的日誌日期格式不是我們習慣使用的 yyyy-mm-dd hh:mm:ss 的日期格式,而修改日期格式網上大部分的方法是需要修改源**的,不用修改源**的方式我也找到了一篇,大家可以參看 這位大佬 的實現方式,可惜我電腦是直接使用 windows 版本的 nginx(1.19.6),time_iso8601這個內建變數沒有,而且我也不想折騰到改原始碼(需要重新編譯,麻煩,尤其是我這種懶人),或者安裝 lua 模組的方式修改,只想直接在配置檔案裡面使用配置的方式修改就能實現,豈不美哉?

在 nginx 配置檔案中的server塊中加入如下配置:

# 使用 nginx 的 if 語句正則匹配 $time_local 中的各個部分

if ( $time_local ~ "^(\d+)\/(\w+)\/(\d+):(\d+):(\d+):(\d+) \+(\d+)" )

# 由於 nginx 自帶配置解析中我只發現了 if 判斷語句,所以下面也只能乙個乙個的對應了

if ( $month = "jan" )

if ( $month = "feb" )

if ( $month = "mar" )

if ( $month = "apr" )

if ( $month = "may" )

if ( $month = "jun" )

if ( $month = "jul" )

if ( $month = "aug" )

if ( $month = "sep" )

if ( $month = "oct" )

if ( $month = "nov" )

if ( $month = "dec" )

http塊下面新增自定義的日誌格式,如下:

# escape=none 表示出現中文不轉碼(高版本 nginx 有此問題)

# [$year-$month-$day $hour:$minute:$second] 中的各個變數是上面配置自定義的變數

'"$http_user_agent" "$http_x_forwarded_for"';

之後在需要記錄日誌的server下新增日誌訪問配置

# logs/9999.access.log 表示日誌儲存路徑

# my_log_format 代**式化模板名稱

access_log logs/9999.access.log my_log_format;

為了方便在多個 server 中復用如期格式配置,我將日期轉換配置抽離到log-format.confnginx.conf匯入相應配置即可使用

}啟動 nginx,訪問http://localhost:9999,檢視logs/9999.access.log,內容如下:

日期格式已經是我們自定義的日期格式了!!!

下面是也是本人近期在用 nginx 做方向**的時候遇到的問題,我希望在日誌中的我方向**之後實際訪問的位址,這種需求就需要用到和上面一樣的思路,我們需要在http > location塊中自定義相應的變數,然後將自定義的變數新增到列印日誌所用的日誌模板中即可,下面是相關配置,各位可做參考:

# 當 proxy 配置比較複雜的時候很有幫助哦

location ~* /***/***-***x-server/(v)/(.*)

nginx配置檔案

執行使用者 user nobody nobody 啟動程序 worker processes 2 全域性錯誤日誌及pid文件 error log logs error.log notice pid logs nginx.pid 工作模式及連線數上限 events 設定http伺服器,利用他的反向 功...

nginx 配置檔案

ps nginx使用有兩三年了,現在經常碰到有新使用者問一些很基本的問題,我也沒時間一一回答,今天下午花了點時間,結合自己的使用經驗,把nginx的主要配置引數說明分享一下,也參考了一些網路的內容,這篇是目前最完整的nginx配置引數中文說明了。更詳細的模組引數請參考 定義nginx執行的使用者和使...

Nginx 配置檔案

2 配置詳解 3 配置備份 nginx 配置檔案主要分為六個區域 nginx worker 程序的執行使用者以及使用者組,預設由 nobody 賬號執行。user nobody nginx 要開啟的子程序數。每個 nginx 程序平均耗費 10m 12m 記憶體,一般指定 1 個程序就足夠了。若是多...