小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【Nginx26】Nginx學(xué)習(xí):日志與鏡像流量復(fù)制

 硬核項(xiàng)目經(jīng)理 2023-09-14 發(fā)布于湖南

Nginx學(xué)習(xí):日志與鏡像流量復(fù)制

總算到了日志模塊,其實(shí)這個(gè)模塊的指令之前我們就用過(guò)了,而且也是是非常常見(jiàn)的指令。相信這一塊的學(xué)習(xí)大家應(yīng)該不會(huì)有什么難度。另一個(gè)則是鏡像功能,這個(gè)估計(jì)用過(guò)的同學(xué)就比較少了,不過(guò)也并不是特別的復(fù)雜,一會(huì)講到的時(shí)候咱們?cè)僭敿?xì)說(shuō)哦。

今天的兩個(gè)模塊都是包含在 Nginx 源碼中的,不需要額外單獨(dú)編譯安裝。所有的配置指令大分部都可以在 http、server、location 中使用,僅有一個(gè)指令是只能配置在 http 中的,我會(huì)單獨(dú)說(shuō)明。

日志

日志模塊是非常常用的模塊,這里指的是訪問(wèn)日志哦,不是 error_log 。錯(cuò)誤日志是屬于 HTTP 核心模塊的內(nèi)容,之前我們已經(jīng)學(xué)習(xí)過(guò)了。大多數(shù)情況下,我們只是去為每個(gè) Server 指定一個(gè)單獨(dú)的日志文件,這樣便于管理,或者有特殊需要就為某些 Location 指定。另外還有一些情況就是會(huì)屏蔽掉一些比如說(shuō) favicon.ico 文件或者靜態(tài)圖片等資源文件的訪問(wèn)日志記錄。

它的全名是 ngx_http_log_module 模塊,用于以指定的格式寫(xiě)入請(qǐng)求日志。請(qǐng)求記錄在處理結(jié)束位置的上下文中。如果在請(qǐng)求處理期間發(fā)生內(nèi)部重定向,它可能與原始位置不同。

還是先來(lái)學(xué)習(xí)它的配置指令,最后再進(jìn)行簡(jiǎn)單地測(cè)試。

access_log

設(shè)置緩沖日志寫(xiě)入的路徑、格式和配置。

access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;

默認(rèn)值是 logs/access.log combined 。可以在同一配置級(jí)別上指定多個(gè)日志??梢酝ㄟ^(guò)在第一個(gè)參數(shù)中指定“syslog:”前綴來(lái)配置日志記錄到 syslog。特殊值 off 取消當(dāng)前級(jí)別的所有 access_log 指令。如果未指定格式,則使用預(yù)定義的“組合”格式。

必須要有的這個(gè) path 參數(shù),是指定日志要記錄到哪個(gè)文件的,可以相對(duì)也可以是絕對(duì)路徑的文件。后面的 format 則是根據(jù)后面要講的 log_format 配置,確定使用哪個(gè)日志格式。這個(gè)參數(shù)可以不填,不填走默認(rèn)的 combined 格式,下面會(huì)看到。

如果使用了 buffer 或 gzip (1.3.10, 1.2.7) 參數(shù),寫(xiě)入日志將被緩沖。緩沖區(qū)大小不得超過(guò)對(duì)磁盤(pán)文件的原子寫(xiě)入大小。對(duì)于 FreeBSD,這個(gè)大小是無(wú)限的。這個(gè)一會(huì)我們會(huì)測(cè)試。

啟用緩沖后,這些數(shù)據(jù)將馬上寫(xiě)入文件:

  • 如果下一個(gè)日志行不適合緩沖區(qū)
  • 如果緩沖的數(shù)據(jù)比刷新參數(shù)(1.3.10、1.2.7)指定的時(shí)間早
  • 當(dāng)工作進(jìn)程重新打開(kāi)日志文件或正在關(guān)閉時(shí)

如果使用 gzip 參數(shù),則緩沖的數(shù)據(jù)將在寫(xiě)入文件之前進(jìn)行壓縮。壓縮級(jí)別可以設(shè)置在 1(最快,較少壓縮)和 9(最慢,最佳壓縮)之間。默認(rèn)情況下,緩沖區(qū)大小等于 64K 字節(jié),壓縮級(jí)別設(shè)置為 1。由于數(shù)據(jù)是按原子塊壓縮的,因此日志文件可以隨時(shí)被“zcat”解壓縮或讀取。

文件路徑可以包含變量(0.7.6+),但是這樣的日志有一些限制:

  • 工作進(jìn)程使用其憑據(jù)的用戶應(yīng)有權(quán)在具有此類(lèi)日志的目錄中創(chuàng)建文件
  • 緩沖寫(xiě)入不起作用
  • 每次寫(xiě)入日志時(shí)都會(huì)打開(kāi)和關(guān)閉文件。但是,由于常用文件的描述符可以存儲(chǔ)在緩存中,因此可以在 open_log_file_cache 指令的有效參數(shù)指定的時(shí)間內(nèi)繼續(xù)寫(xiě)入舊文件
  • 在每次日志寫(xiě)入期間,都會(huì)檢查請(qǐng)求的根目錄是否存在,如果不存在,則不會(huì)創(chuàng)建日志。因此,在同一配置級(jí)別上同時(shí)指定 root 和 access_log 是一個(gè)好主意

if 參數(shù) (1.7.0) 啟用條件日志記錄。如果條件評(píng)估為“0”或空字符串,則不會(huì)記錄請(qǐng)求。就是可以有條件的記錄到日志,后面我們也會(huì)測(cè)試這個(gè)參數(shù)。

另外,如果是新安裝好的 Nginx ,沒(méi)有別的訪問(wèn)日志配置,并且在編譯時(shí)有 --http-log-path=/var/log/nginx/access.log 那么就是默認(rèn)找不到 access_log 和 log_format 配置的其它所有日志全被記錄到這個(gè)編譯時(shí)參數(shù)所指定的日志文件中。如果你找不到日志在哪了,可以 nginx -V 看一下是不是記錄到這里了哦。

log_format

指定日志的格式。

log_format name [escape=default|json|none] string ...;

默認(rèn)值 combined "..." ,它只能配置在 http 模塊下。轉(zhuǎn)義參數(shù) (1.11.8) 允許在變量中設(shè)置 json 或默認(rèn)字符轉(zhuǎn)義,默認(rèn)情況下使用默認(rèn)轉(zhuǎn)義。none 值 (1.13.10) 禁用轉(zhuǎn)義。對(duì)于默認(rèn)轉(zhuǎn)義,字符“"”、“\”和其他值小于 32 (0.7.0) 或大于 126 (1.1.6) 的字符將轉(zhuǎn)義為“\xXX”。如果找不到變量值,將記錄一個(gè)連字符(“-”)。對(duì)于json轉(zhuǎn)義,JSON字符串中不允許的所有字符都將被轉(zhuǎn)義:字符“”和“\”被轉(zhuǎn)義為“\”和“\\”,值小于32的字符被轉(zhuǎn)義為“\n”, “\r”、“\t”、“\b”、“\f”或“\u00XX”。

必須的 name 參數(shù)就是上面 access_log 所需要的那個(gè) format 參數(shù)。這樣兩邊配合起來(lái)就是一套完整的日志記錄功能了。

日志格式可以包含公共變量,以及僅在寫(xiě)入日志時(shí)存在的變量:

  • $bytes_sent 發(fā)送到客戶端的字節(jié)數(shù)
  • $connection 連接序列號(hào)
  • $connection_requests 當(dāng)前通過(guò)連接發(fā)出的請(qǐng)求數(shù) (1.1.18)
  • $msec 以秒為單位的時(shí)間,在日志寫(xiě)入時(shí)以毫秒為單位
  • $pipe “p”如果請(qǐng)求是流水線的,“.”否則
  • $request_length 請(qǐng)求長(zhǎng)度(包括請(qǐng)求行、請(qǐng)求頭和請(qǐng)求體)
  • $request_time 以毫秒為單位的請(qǐng)求處理時(shí)間;從客戶端讀取第一個(gè)字節(jié)到最后一個(gè)字節(jié)發(fā)送到客戶端后寫(xiě)入日志之間經(jīng)過(guò)的時(shí)間
  • $status 響應(yīng)狀態(tài)
  • $time_iso8601 ISO 8601 標(biāo)準(zhǔn)格式的當(dāng)?shù)貢r(shí)間
  • $time_local 通用日志格式的本地時(shí)間

在現(xiàn)代 nginx 版本中,變量 $status (1.3.2, 1.2.2), $bytes_sent (1.3.8, 1.2.5), $connection (1.3.8, 1.2.5), $connection_requests (1.3.8, 1.2 .5), $msec (1.3.9, 1.2.6), $request_time (1.3.9, 1.2.6), $pipe (1.3.12, 1.2.7), $request_length (1.3.12, 1.2.7 )、$time_iso8601 (1.3.12, 1.2.7) 和 $time_local (1.3.12, 1.2.7) 也可用作公共變量。

發(fā)送到客戶端的標(biāo)題行具有前綴“sent_http_”,例如,$sent_http_content_range。

配置始終包含預(yù)定義的“組合”格式:

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

默認(rèn)安裝完成后提供的 nginx.conf 或 nginx.conf.default 中,有兩段注釋掉的日志配置,其實(shí)就是最基本的日志配置信息。你可以打開(kāi)試試哦。

 #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 #                  '$status $body_bytes_sent "$http_referer" '
 #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
 #
access_log  logs/access.log  main;

open_log_file_cache

定義一個(gè)緩存,用于存儲(chǔ)名稱(chēng)包含變量的常用日志的文件描述符。

open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;

該指令具有以下參數(shù):

  • max 設(shè)置緩存中描述符的最大數(shù)量;如果緩存已滿,則關(guān)閉最近最少使用 (LRU) 描述符
  • inactive 如果在此期間沒(méi)有訪問(wèn),則設(shè)置緩存描述符關(guān)閉的時(shí)間;默認(rèn)情況下,10 秒
  • min_uses 設(shè)置在由 inactive 參數(shù)定義的時(shí)間內(nèi)文件使用的最小數(shù)量,以讓描述符在緩存中保持打開(kāi)狀態(tài);默認(rèn)情況下,1
  • valid 設(shè)置應(yīng)檢查文件是否仍以相同名稱(chēng)存在的時(shí)間;默認(rèn)情況下,60 秒
  • off 禁用緩存

這個(gè)確實(shí)沒(méi)用過(guò),不過(guò)看樣子是緩存打開(kāi)的日志文件的句柄的。也不知道怎么測(cè)出效果,所以咱們就不演示了哈。有興趣的小伙伴可以自己看一下,有相關(guān)的經(jīng)驗(yàn)的大佬也歡迎留言評(píng)論哈。

日志測(cè)試

好了,日志模塊的配置指令就是上面那三個(gè),不是特別復(fù)雜吧,接下來(lái)我們就簡(jiǎn)單測(cè)試一下。先配置兩個(gè) log_format ,名字就叫 log1 和 log2 吧,為了測(cè)試方便。真實(shí)業(yè)務(wù)場(chǎng)景下還是要根據(jù)自己的需求好好起名字哈。

log_format  log1  'This is Log1 Format: $remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for" "$arg_a"' ;

log_format log2 escape=json '{"remote_addr":"$remote_addr"}';

然后找一個(gè) Server ,建個(gè) lcoation 。

location /log1/ {
  alias html/;
  access_log logs/log1_access_con.log.gz log1 buffer=1000 gzip=1 if=$arg_a;
  access_log logs/log1_access.log log1;
}

這個(gè)配置是啥意思呢?第一條 access_log ,加了一些參數(shù),分別是緩沖區(qū)配置、gzip壓縮一下,然后還有條件。也就是說(shuō),當(dāng)我們的 GET 參數(shù)中有 a 這個(gè)參數(shù)時(shí),訪問(wèn)日志會(huì)記錄到 logs/log1_access_con.log.gz 這個(gè)文件中。

第二條 access_log ,沒(méi)有別的參數(shù),就是最簡(jiǎn)單的使用 log1 的配置。現(xiàn)在直接訪問(wèn)一下吧,先看下不帶任何參數(shù)。

# /usr/local/nginx/logs/log1_access.log
This is Log1 Format: 192.168.56.1 -  [05/Sep/2022:09:18:47 +0800] "GET /log1/ HTTP/1.1" 200 621 "" "PostmanRuntime/7.29.2" "" ""

普通的日志記錄文件中,清楚地看到了訪問(wèn)請(qǐng)求的情況。注意最后有兩個(gè)空的雙引號(hào),并且 logs/log1_access_con.log.gz 創(chuàng)建了,但還是空的。然后我們?cè)賻б粋€(gè) ?a=111 這樣的 GET 參數(shù)試一下。

# /usr/local/nginx/logs/log1_access.log
This is Log1 Format: 192.168.56.1 -  [05/Sep/2022:09:19:22 +0800] "GET /log1/?a=111 HTTP/1.1" 200 621 "" "PostmanRuntime/7.29.2" "" "111"

看出來(lái)不同了吧,最后的一個(gè)空引號(hào)有值了,因?yàn)槲覀冊(cè)谏厦娴?log1 的 log_format 中最后加入了 $arg_a 這個(gè)變量。現(xiàn)在 if 參數(shù)的條件滿足了,我們?cè)倏匆幌?log1_access_con.log.gz 文件,我這里還是 0 ,還是沒(méi)有內(nèi)容,這是為啥?因?yàn)?buffer 參數(shù)的問(wèn)題啦,日志內(nèi)容還沒(méi)有刷到文件中。這時(shí)可以多刷幾下,或者重載配置 nginx -s reload ,重載日志 nginx -s reopen 都可以。然后就會(huì)看到 log1_access_con.log.gz 有內(nèi)容了。直接使用 gzip 命令解壓。

gzip -d log1_access_con.log.gz

查看解壓出來(lái)文件內(nèi)容,應(yīng)該和上面記錄的日志是一樣的。不過(guò)這邊記錄的日志都是有最后那個(gè) GET 參數(shù)的。

好了,上面還有一個(gè) log2 的格式配置,使用了 escape=json ,就是要記錄一個(gè) JSON 格式的日志。那么咱們也單獨(dú)再來(lái)一個(gè) location 測(cè)試吧,為了看得清楚一點(diǎn)。

location /log2/ {
  alias html/;
  access_log logs/log2_access.log log2;
}

訪問(wèn)之后查看日志文件,記錄的內(nèi)容是這樣的。

# /usr/local/nginx/logs/log2_access.log
{"remote_addr":"192.168.56.1"}

記錄 POST 日志

在之前學(xué)習(xí)內(nèi)嵌變量時(shí),我們就說(shuō)過(guò),所有的變量都可以用在日志記錄中,而且之前還學(xué)習(xí)過(guò)一些變量是只能在日志中體現(xiàn)的。比如說(shuō) $gzip_ratio 這種。另外,還有一種非常常見(jiàn)的需求就是要記錄 POST 參數(shù),為啥呢?因?yàn)楝F(xiàn)在很多大數(shù)據(jù)分析系統(tǒng),會(huì)直接通過(guò)日志分析來(lái)提取數(shù)據(jù)。就像我們?cè)谥v emptygif 時(shí)說(shuō)過(guò)的數(shù)據(jù)采集。不過(guò)空?qǐng)D片一般都是以 GET 參數(shù)的提取分析為主,實(shí)際業(yè)務(wù)中還是可能會(huì)有 POST 數(shù)據(jù)提取的需求。

為了利用 Nginx 的強(qiáng)大性能,并同步收集到 POST 數(shù)據(jù)埋點(diǎn)信息,我們也可以直接簡(jiǎn)單地將 POST 數(shù)據(jù)變量放到日志格式配置中就可以實(shí)現(xiàn)這種功能了。

log_format postinfo '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent" '
                    '"$request_body"';
server {
  listen 8026;
  location ~ \.php$ {
    root           html;
    fastcgi_pass   unix:/var/sock/php-fpm/www.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
 }

 access_log logs/26.post.log postinfo;
}

上面的配置中,只是在默認(rèn)日志最后多加了一個(gè) $request_body 變量。它的意思就是獲取 Body 中的內(nèi)容,也就是 POST 的數(shù)據(jù)信息。這個(gè)變量之前我們已經(jīng)學(xué)習(xí)過(guò)哦,不記得的小伙伴可以回到 Nginx學(xué)習(xí):HTTP核心模塊(十二)內(nèi)嵌變量 https://mp.weixin.qq.com/s/0ks7GgfcvJpQp7mA1IgQcA 再看一下哦。

curl  --request POST 'http://192.168.56.88:8026/1.php?a=123' --data-urlencode 'bbb=4444'
192.168.56.1 - - [05/Sep/2022:10:55:34 +0800] "POST /1.php?a=123 HTTP/1.1" 200 1366 "-" "PostmanRuntime/7.29.2" "bbb=4444"

看到日志記錄的結(jié)果了吧。不過(guò)需要注意的是,POST 還有一種提交格式是 FORM-DATA ,就是需要上傳文件時(shí)要用的那種格式,這種格式獲得的結(jié)果是不一樣的哦。

curl  --request POST 'http://192.168.56.88:8026/1.php?a=123' --form 'aaa=555'
192.168.56.1 - - [05/Sep/2022:10:59:00 +0800] "POST /1.php?a=123 HTTP/1.1" 200 1102 "-" "curl/7.79.1" "--------------------------02b9bcad6dd94cb3\x0D\x0AContent-Disposition: form-data; name=\x22aaa\x22\x0D\x0A\x0D\x0A555\x0D\x0A--------------------------02b9bcad6dd94cb3--\x0D\x0A"

大數(shù)據(jù)提取日志時(shí)需要注意這兩塊的不同哦。

鏡像 Mirror

這個(gè)鏡像是啥?在沒(méi)系統(tǒng)學(xué)習(xí)文檔之前我都不知道還有這么個(gè)東西。它的全稱(chēng)是 ngx_http_mirror_module 模塊(1.13.4)通過(guò)創(chuàng)建后臺(tái)鏡像子請(qǐng)求來(lái)實(shí)現(xiàn)原始請(qǐng)求的鏡像,并且會(huì)忽略對(duì)鏡像子請(qǐng)求的響應(yīng)。

還是看不懂吧?其實(shí)呀,它就是可以將我們的請(qǐng)求再發(fā)給另一個(gè)鏡像地址,它只管發(fā)送,不管那邊會(huì)有什么響應(yīng)。就相當(dāng)于是將流量復(fù)制了一份。我們先來(lái)看它的配置。

mirror

設(shè)置原始請(qǐng)求將被鏡像到的 URI。

mirror uri | off;

默認(rèn)值是 off ,打開(kāi)的話就是設(shè)置一個(gè) URI 就可以了,這個(gè) URI 就是要發(fā)送到的地址??梢栽谕慌渲眉?jí)別上指定多個(gè)鏡像。

mirror_request_body

指示客戶端請(qǐng)求正文是否被鏡像。啟用后,將在創(chuàng)建鏡像子請(qǐng)求之前讀取客戶端請(qǐng)求正文。

mirror_request_body on | off;

在這種情況下,由 proxy_request_buffering、fastcgi_request_buffering、scgi_request_buffering 和 uwsgi_request_buffering 指令設(shè)置的無(wú)緩沖客戶端請(qǐng)求正文代理將被禁用。

這個(gè)配置默認(rèn)是 on ,如果改成 off 的話,POST 請(qǐng)求中的 Body 部分就不會(huì)被發(fā)送到鏡像地址上了。

鏡像流量復(fù)制測(cè)試

好了,直接來(lái)測(cè)試吧,這個(gè)東西要是上面沒(méi)看懂,那就手動(dòng)測(cè)試一下,不動(dòng)手,光看概念,不懂的始終還是不懂。我們先準(zhǔn)備一個(gè)鏡像 location 。

location /mirror1/ {
  alias html/;
  mirror /26.php;

  #
 mirror_request_body off;
}

設(shè)置一個(gè) mirror 指定地址為當(dāng)前目錄的 26.php 這個(gè)文件,當(dāng)然我們也可以設(shè)置成靜態(tài)文件,不過(guò)為了記錄請(qǐng)求是否真的發(fā)過(guò)去了,使用動(dòng)態(tài)文件還是方便些。

這個(gè) 26.php 里面就是記錄一下請(qǐng)求的內(nèi)容到一個(gè)日志文件中。不需要返回什么響應(yīng),因?yàn)殓R像是會(huì)忽略響應(yīng)的嘛,它只是將請(qǐng)求發(fā)走,響應(yīng)還是按正常的響應(yīng),不會(huì)走鏡像中的響應(yīng)。

<?php
$req = json_encode($_REQUEST);
file_put_contents('./26.REQ.log', $req, FILE_APPEND);

上面兩個(gè)準(zhǔn)備好了之后,我們就可以測(cè)試了。

// curl 請(qǐng)求
curl  --request POST 'http://192.168.56.88/mirror1/?a=123' --data-urlencode 'bbb=4444'


// 26.REQ.log
{"a":"123","bbb":"ssss"}{"a":"123","bbb":"ssss"}

可以看到,請(qǐng)求內(nèi)容被完整記錄了下來(lái),但是訪問(wèn)路徑返回的響應(yīng)還是我們的靜態(tài)首頁(yè)的內(nèi)容。不過(guò)你會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,這個(gè)日志被記錄了兩條,也就是說(shuō),這個(gè) 26.php 被訪問(wèn)了兩次。如果我們直接訪問(wèn)這個(gè) php 頁(yè)面,是只會(huì)正常記錄一次的。

curl  --request POST 'http://192.168.56.88/26.php?a=123' --data-urlencode 'bbb=4444'

這個(gè)原因我也沒(méi)找到,網(wǎng)上也沒(méi)有相關(guān)的資料。

那么這個(gè)鏡像功能可以有什么實(shí)際的應(yīng)用嗎?一是可以做流量放大,比如多次請(qǐng)求;二是灰度發(fā)布驗(yàn)證,通過(guò)鏡像到新版來(lái)驗(yàn)證新版本是否會(huì)報(bào)錯(cuò);三是忽略響應(yīng)很重要,可以發(fā)送一些回調(diào)驗(yàn)證之類(lèi)的請(qǐng)求。

不過(guò)需要注意的是,雖然會(huì)忽略響應(yīng),但如果鏡像的地址無(wú)響應(yīng)或者響應(yīng)慢的時(shí)候,也會(huì)拖累主請(qǐng)求的響應(yīng)速度。另外如果是 POST/PUT/DELETE 這些請(qǐng)求,一定要清楚地知道自己發(fā)送的請(qǐng)求會(huì)對(duì)數(shù)據(jù)產(chǎn)生的影響,并且鏡像端要做好日志記錄。

總結(jié)

日志功能很重要,雖然錯(cuò)誤日志可能更有利于我們進(jìn)行調(diào)試,發(fā)現(xiàn)問(wèn)題。但是訪問(wèn)日志同樣也很關(guān)鍵,網(wǎng)站的很多統(tǒng)計(jì),流量、熱點(diǎn)鏈接、爬蟲(chóng)分析、黑客防護(hù)等也都需要通過(guò)分析訪問(wèn)日志來(lái)實(shí)現(xiàn)。因此,大部分情況下,咱們還是要打開(kāi)并且配置好相應(yīng)的訪問(wèn)日志信息的。但是訪問(wèn)日志一般會(huì)比較大,因此會(huì)有日志需要分割保存的問(wèn)題,關(guān)于這個(gè)問(wèn)題,我們后面再說(shuō),但其實(shí)非常簡(jiǎn)單,大家自己先去找找相關(guān)的資料也沒(méi)問(wèn)題。

另一個(gè)鏡像模塊,真的之前從來(lái)不知道,現(xiàn)在雖然了解了,但是要想靈活運(yùn)用還是需要更多的實(shí)踐的。所以咱們也不瞎吹牛了,功能用法了解之后就是實(shí)踐運(yùn)用嘗試一下咯。

參考文檔:

http:///en/docs/http/ngx_http_log_module.html

http:///en/docs/http/ngx_http_mirror_module.html

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多