Nginx入門(二)Nginx echo 模塊的使用

Nginx入門(二)Nginx echo 模塊的使用

原本是想在第二篇文章就介紹nginx配置反向代理服務器。但是發(fā)現(xiàn)了echo模塊這樣的神器铅鲤,對于之后學習nginx配置代理服務器會有很大幫助,所以先學習一下echo模塊褥伴。
echo 模塊是在nginx程序上擴展了echo輸出字符的功能, 對于調(diào)試很方便, 可以說是學習nginx的必備神器准谚。項目地址:https://github.com/openresty/echo-nginx-module

安裝

本人在安裝 echo 模塊的時候也是遇到各種坑。如果你的電腦不是Mac, 可以參考Nginx動態(tài)模塊安裝 結(jié)合echo 模塊 安裝指南瓢谢。
如果你用的是mac今阳。那么就用brew吧暮顺,一條命令安裝凉蜂。可以用一下命令羔杨。

brew install nginx-full --with-echo-module

具體可以參考這個鏈接(ttps://github.com/Homebrew/homebrew-nginx)
如果你之前安裝過Nginx捌臊,用brew安裝可能會遇到?jīng)_突,可以用下面命令解決沖突兜材。

brew unlink nginx

使用

大家可以通過下面的鏈接下載該配置文件理澎。后面echo模塊的測試用例根據(jù)該文件來講解。如果你是mac電腦曙寡,并且按照之前步驟安裝好nginx糠爬,那么把下載下來的配置文件放在/usr/local/etc/nginx/servers目錄下面。在本地電腦配置host

127.0.0.1 testecho.baidu.com

日志

先說一下怎么看nginx 日志举庶。電腦安裝nginx后并沒創(chuàng)建nginx日志目錄文件执隧。需要根據(jù)你的配置文件,手動創(chuàng)建。 我在/usr/local/etc/nginx/目錄下創(chuàng)建日志目錄logs/nginx,所有訪問testecho.qidian.com的訪問日志和錯誤日志都會自動打印到該目錄下镀琉。

下面簡單介紹一下幾個常用的命令

echo - 輸出字符

  • 語法: echo [options] <string>...
輸出全局變量$remote_addr
 location /test {
     echo $remote_addr;
     echo $args;
 }

curl testecho.baidu.com:8081/test?123
輸出結(jié)果為

127.0.0.1
123

這樣可以方便查看第一篇文章中介紹的全局變量的值峦嗤,是不是很方便?

echo_before_body, echo_after_body - 頁面前屋摔、后插入內(nèi)容

  • 語法: echo_before_body [options] [argument]...
# 反向代理添加前置烁设、后置內(nèi)容
location = /api/proxy_before_after {
    echo_before_body hello before;
    proxy_pass http://127.0.0.1:8081/test;
    echo_after_body world after;
}

curl testecho.baidu.com:8081/api/proxy_before_after?123
輸出結(jié)果為:

hello before
127.0.0.1
123
world after

echo_sleep - 請求等待

  • 語法: echo_sleep <seconds>
    該方法可以使得請求等待指定秒數(shù)。該方法不會阻塞整個nginx進程钓试。
    curl testecho.baidu.com:8081/api/sleep
    輸出結(jié)果為
 1
 2

echo_location_async, echo_location - 請求指定路徑

  • 語法: echo_location_async <location> [<url_args>]

異步跟同步的區(qū)別是:

  1. 異步會并行的去請求
  2. 同步等待當前請求結(jié)束才會往下執(zhí)行

下面這個整個時間為2s, 因為所有路徑中最大耗時是2s:

location /main1 {
     echo_reset_timer;
     echo_location_async /sub1;
     echo_location_async /sub2;
     echo "took $echo_timer_elapsed sec for total.";
 }
 location /sub1 {
     echo_sleep 2;
     echo hello;
 }
 location /sub2 {
     echo_sleep 1;
     echo world;
 }

curl testecho.baidu.com:8081/main1 輸出結(jié)果為

hello
world
took 0.000 sec for total.

之所以輸出0s因為main1不會去等待兩個子請求sub1和sub2装黑。所以非常快就結(jié)束了弓熏。
如果將上面main1中的echo_location_async 改成echo_location恋谭。
curl testecho.baidu.com:8081/main2 輸出結(jié)果為

hello
world
took 3.002 sec for total.

可以通過第二個參數(shù)傳參數(shù)給子請求 querystring: echo_location_async /sub 'foo=Foo&bar=Bar';

echo_foreach_split - 分隔循環(huán)

  • 語法: echo_foreach_split <delimiter> <string>
    該方法可以將請求中參數(shù)根據(jù)分隔符分離出來。
   location /loop {
     echo_foreach_split ',' $arg_list;
       echo "item: $echo_it";
     echo_end;
   }

curl testecho.baidu.com:8081/loop?list=cat,dog,mouse 輸出結(jié)果為

item: cat
item: dog
item: mouse

if語句的調(diào)試

通過arg_val可以獲取到請求參數(shù)挽鞠,方便調(diào)試if 語句

   location ^~ /if {
       set $res miss;
       if ($arg_val ~* '^a') {
           set $res hit;
           echo $res;
       }
       echo $res;
   }

訪問 curl testecho.baidu.com:8081/if?val=abc
輸出

hit

訪問 curl testecho.baidu.com:8081/if?val=bcd

miss

感謝閱讀,下一章會介紹nginx配置反向代理服務器??
面試資料推薦

https://zfau4tzxp5.feishu.cn/docx/ByM0dxtWoo87QtxnWtTcG0kCnpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末箕别,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子滞谢,更是在濱河造成了極大的恐慌,老刑警劉巖除抛,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狮杨,死亡現(xiàn)場離奇詭異,居然都是意外死亡到忽,警方通過查閱死者的電腦和手機橄教,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喘漏,“玉大人护蝶,你說我怎么就攤上這事◆媛酰” “怎么了持灰?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長负饲。 經(jīng)常有香客問我堤魁,道長,這世上最難降的妖魔是什么返十? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任妥泉,我火速辦了婚禮,結(jié)果婚禮上洞坑,老公的妹妹穿的比我還像新娘盲链。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布刽沾。 她就那樣靜靜地躺著本慕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悠轩。 梳的紋絲不亂的頭發(fā)上间狂,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音火架,去河邊找鬼鉴象。 笑死,一個胖子當著我的面吹牛何鸡,可吹牛的內(nèi)容都是我干的纺弊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼骡男,長吁一口氣:“原來是場噩夢啊……” “哼淆游!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起隔盛,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤犹菱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吮炕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腊脱,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年龙亲,在試婚紗的時候發(fā)現(xiàn)自己被綠了陕凹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡鳄炉,死狀恐怖杜耙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拂盯,我是刑警寧澤佑女,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站谈竿,受9級特大地震影響珊豹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜榕订,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一店茶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劫恒,春花似錦贩幻、人聲如沸轿腺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽族壳。三九已至,卻和暖如春趣些,著一層夾襖步出監(jiān)牢的瞬間仿荆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工坏平, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拢操,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓舶替,卻偏偏與公主長得像令境,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子顾瞪,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理舔庶,服務發(fā)現(xiàn),斷路器陈醒,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 上一篇《WEB請求處理一:瀏覽器請求發(fā)起處理》惕橙,我們講述了瀏覽器端請求發(fā)起過程,通過DNS域名解析服務器IP钉跷,并建...
    七寸知架構(gòu)閱讀 80,942評論 21 356
  • 前言 Nginx是當前最流行的HTTP Server之一吕漂,根據(jù)W3Techs的統(tǒng)計,目前世界排名(根據(jù)Alexa)...
    GarfieldEr007閱讀 5,304評論 4 22
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx尘应?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 32,649評論 24 1,002
  • 1. Nginx的模塊與工作原理 Nginx由內(nèi)核和模塊組成吼虎,其中犬钢,內(nèi)核的設計非常微小和簡潔,完成的工作也非常簡單...
    rosekissyou閱讀 10,200評論 5 124