成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Nginx map 實現時間格式轉換

開發 前端
最近我們需要把 Nginx 的日志接入到自研的日志采集平臺上,但是這個平臺只支持 JSON 格式,所以需要把 Nginx 日志格式改成 JSON 格式。

哈嘍大家好,我是咸魚

最近我們需要把 Nginx 的日志接入到自研的日志采集平臺上,但是這個平臺只支持 JSON 格式,所以需要把 Nginx 日志格式改成 JSON 格式

例如下面這樣的效果

剛開始在主配置文件 nginx.conf 中定義了一個名叫 json 的日志格式字段

驗證的時候其他內容沒啥問題,但是時間是2023-09-12T13:54:22+08:00 這樣子的,不太符合預期

咸魚想著把 $time_iso8601 變量中的年月日時分秒分別提取出來然后用變量去接受它,如下所示:

我自定義了一個時間格式 $year-$month-$day $hour:$minutes:$seconds:000,然后接著用了一個 if 語句用于檢查請求的時間是否匹配 ISO8601 時間格式(例如:2023-09-12T13:54:22+08:00)

如果匹配,它將執行其中的代碼塊。在代碼塊中,使用正則表達式提取時間的年、月、日、小時、分鐘和秒,并將它們賦值給變量 $year、$month、$day、$hour、$minutes 和 $seconds

但是 nginx -t 檢測的時候我發現 if 語句不能夠放在 http 塊內,否則會報錯

在 Nginx 中,if 語句主要用于在 server 或 location 塊內設置條件,以便根據請求的屬性來執行不同的配置。if 語句通常應該包含在 server 或 location 塊內,而不是直接放在 http 塊中

如果將 if 語句放在一個一個 server 塊中,這不得累死我(有很多個 server 塊),而且后期維護也不方便

所以如何將自定義變量在全局配置中生效則成為了一個問題

map

map 指令是由 ngx_http_map_module 模塊提供的,是 Nginx 配置文件中的一種用于創建變量映射的指令

模塊鏈接:https://nginx.org/en/docs/http/ngx_http_map_module.html

它允許我們將一個或多個輸入值映射到一個輸出值,類似于字典或哈希表的概念。map 指令通常用于根據特定條件為請求設置自定義變量,或者執行基于請求屬性的條件控制

比較常見的 map 用法是通過 map 來實現允許多個域名跨域訪問的問題

語法如下:

其中:

  • $variable 輸入變量,通常是 nginx 的內置變量。
  • $new_variable 輸出變量,它將根據輸入值的映射設置為特定的結果。
  • value1, value2, ... 輸入值,可以列出多個值。
  • result1, result2, ... 與相應輸入值相關聯的輸出結果。
  • default 一個可選項,表示如果沒有匹配的輸入值,將使用默認結果

需要注意的是,map 只能放在 http 塊中

有了 map,我們就可以輕易的把 $time_iso8601 變量中的 ISO 8601 格式的時間戳轉換為指定的時間格式,然后存儲到自定義變量 $log_time 中

我們可以看到:

  • 輸入變量為 $time_iso8601,輸出變量為 $log_time;
  • default "":如果沒有匹配任何條件,將使用空字符串作為 $log_time 的值
  • "~^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})T(?<hour>\d{2}):(?<minutes>\d{2}):(?<seconds>\d{2})":這是一個正則表達式條件,它用于匹配 ISO 8601 格式的時間戳。該正則表達式包含了多個捕獲組(使用 ?<name> 語法),用于從時間戳中提取年、月、日、小時、分鐘和秒的值
  • "${year}-${month}-${day} ${hour}:${minutes}:${seconds}":這是與正則表達式條件匹配時設置的輸出值。當正則表達式條件匹配時,它會將捕獲組中提取的年、月、日、小時、分鐘和秒的值組合成一個自定義的時間格式,然后將該值設置為 $log_time 變量的值

例如,如果 $time_iso8601 的值是 "2023-09-09T14:30:00",則 $log_time 將被設置為 "2023-09-09 14:30:00"

然后我們再把 $log_time 放進我們自定義的日志格式里面,完整配置如下

最后我們驗證一下

責任編輯:武曉燕 來源: 咸魚運維雜談
相關推薦

2024-07-09 09:08:36

golang簽名參數簽名時間

2022-06-29 14:06:54

canvas鴻蒙

2024-09-09 14:57:31

2009-07-30 15:57:30

C#時間

2024-12-13 09:42:38

javascripmatch方法

2009-07-31 14:09:41

c#時間格式轉換

2021-10-15 09:00:02

Python日期轉換Python基礎

2011-07-22 17:52:46

iPhone 時間 控件

2010-09-14 14:32:02

sql server日

2010-05-11 10:22:43

Mysql日期

2011-08-22 10:59:42

SQL Server日期時間格式轉換字符串

2009-07-31 13:48:09

C#時間轉換

2024-09-03 10:06:43

JavaMap項目

2024-05-06 09:26:06

Rust語言編碼

2022-09-05 08:06:36

SpringBoot時間格式化

2010-09-16 13:22:03

Sql Server日

2009-12-24 15:59:46

WPF圖像格式

2009-07-31 13:52:32

C#時間函數C#時間格式

2017-09-12 16:31:21

TensorFlowLSTMCNN

2020-11-03 10:21:33

MySQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品中文在线 | 黄色一级大片在线免费看产 | 久久精品16| 日韩无 | 国产成人免费视频 | 不卡一区二区三区四区 | 91啪影院| 精品一区二区三区在线观看 | 精品国产乱码久久久久久丨区2区 | 亚洲国产精品久久人人爱 | 色网站在线免费观看 | 久久久一区二区三区 | 久久久久国产精品午夜一区 | 黑人中文字幕一区二区三区 | 中文字幕 亚洲一区 | 亚洲精品乱码久久久久v最新版 | 欧洲妇女成人淫片aaa视频 | 久久av一区二区 | 欧美不卡| 最新日韩av | 日韩三级在线 | 国产亚洲精品精品国产亚洲综合 | 美女黄色在线观看 | 亚洲天堂一区二区 | 久久久久亚洲 | 国产免费观看一级国产 | 欧美一区二区在线播放 | 亚洲一区二区在线播放 | 久久99蜜桃综合影院免费观看 | 黄色大片视频 | a久久| 国产精品视频网站 | 久久综合狠狠综合久久 | 欧美日韩精品一区 | 一区二区三区四区电影视频在线观看 | 日韩中文在线观看 | 欧美精品91| 黄色免费av | 日日日干干干 | 99亚洲精品| 亚洲精品美女视频 |